zoukankan      html  css  js  c++  java
  • JS-构造函数2

    一.如何创建对象
    1.对象字面量
    var obj1={
    name:"吻别",
    singer:"张学友",
    type:"流行"
    }
    2.构造函数
    var obj=new Object();
    obj.name="刘德华";
    obj.age=45;
    obj.hobby=function () {
    console.log("唱歌");
    };
    3.封装简单的工厂函数 (不推荐使用)
    function createSong(Name,Age){
    var o=new Object();
    o.name=Name;
    o.age=Age;
    o.hobby=function () {
    console.log("让我唱首歌");
    };
    return o
    }
    var obj1=createSong("刘德华",45);
    var obj2=createSong("张学友",36);
    console.log(obj1.hobby());

    4.自定义构造函数
    //构造函数是用来初始化对象 (给对象新增成员)
    //并且和new关键字同时出现
    //new是用来创建对象的
    //构造函数名首字母要大写 以示区分
    function Person() {
    //默认隐含的操作,把刚用new新创建出的对象赋值给this
    this.name="尼古拉斯";
    this.age="36";
    this.sayHello=function () {
    console.log("hello world");
    }
    }
    var P=new Person();//new object()

    5.原型解决构造函数中的问题
    //构造函数 原型解决问题
    function Person(name,age,gender) {
    this.name=name;
    this.age=age;
    this.gender=gender;
    // this.sayHello=function () {
    // console.log("我叫"+this.name);
    // }//此处会导致代码的多次重复浪费,所以解决方法用原型
    }
    Person.prototype.sayHello=function () {
    console.log("我叫"+this.name);
    }
    var p1=new Person("刘德华",18,"male"); //实例化
    var p2=new Person("张学友",16,"male");//实例化
    p1.sayHello();
    p2.sayHello();

    6.实例化
    实例化:通过构造函数创建对象的过程

    7.原型对象的使用方法
    //1.利用对象的动态特性给原型对象添加成员
    Person.prototype.sayHello=function () {
    console.log("我叫"+this.name)
    };
    p=new Person("刘德华",18,"male");
    p.sayHello();

    //2.直接替换原型对象
    Person.prototype={
    msg:"you are a good boy",
    func:function () {
    console.log(this.msg);
    }
    };
    p1=new Person("张学友",20,"male");
    //此处p1不能调用sayHello()方法,因为他是原型对象从新创建之后,创建出来的
    console.log(p1.msg);

    8.使用原型注意事项
    1.使用对象访问属性的时候,如果在本身找不到就会去原型找
    2.但是使用.语法赋值的时候并不会去原型中找
    3.使用.语法赋值的时候,如果对象中不存在该属性时,就会给该对象新增该属性,而不会新增原型中的属性
    4.如何在原型中的属性是引用类型属性,那么所有对象共用该属性,并且一个对象修改了该引用类型属性中
    的成员,其他对象也都会受影响
    5.一般情况下不会将属性放入到原型对象中去,一般情况下原型对象中只会放共享的方法

    //构造函数 通过constructor可以找到构造函数
    function Person(name,age,gender,car) {
    this.name=name;
    this.age=age;
    this.gender=gender;
    this.car=car;
    }
    var x={
    brand:"byd"
    };
    var p1=new Person("张学友",12,"male",x);
    console.log(Person.prototype.constructor);
    var p2=new p1.constructor("刘德华",45,"male",x); //通过constructor可以找到构造函数
    console.log(p2.name)
  • 相关阅读:
    提升网页访问速度
    npm模块之http-proxy-middleware使用教程
    Spring MVC详解
    angular ng-select ng-option
    grunt uglify 去掉console.log
    window.open
    spring学习
    requirejs 入门【链接】
    IOS上iframe的滚动条失效的解决办法
    优秀技术链接
  • 原文地址:https://www.cnblogs.com/knighterrant/p/9838062.html
Copyright © 2011-2022 走看看