zoukankan      html  css  js  c++  java
  • 创建对象 之 组合使用构造函数模式和原型模式



    // 创建自定义类型的最常见的方式,就是组合使用构造函数模式和原型模式,构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性。
    // 这样的话,每个实例都会有自己的一份实例属性的副本,但同时又共享着对方法的引用,最大的节省了内存
    // 另外,这种混成模式还支持向构造函数传递参数,可谓是集两种模式之长

    function Person(name,age,job){
    this.name=name;
    this.age=age;
    this.job=job;
    this.friends=["sum1","sum2","sum3"];
    }
    Person.prototype={
    constructor:Person,
    sayName:function(){
    console.log(this.name);
    }
    }
    var person1=new Person("summer",20,"enginner");
    var person2=new Person("Bob",22,"Doctor");
    person1.friends.push("sum4");
    console.log(person1.friends); // ["sum1", "sum2", "sum3", "sum4"]
    console.log(person2.friends); // ["sum1", "sum2", "sum3"]
    console.log(person1.friends===person2.friends); // false
    console.log(person1.sayName===person2.sayName); // true

    //在上面这个例子中,实例属性都是在构造函数中定义的,而由所有实例共用的constructor和方法都是定义在原型中的。
    // 而修改了person1.friends并不会修改person2.friends因为他们引用了不同的数组
    // 这种 构造函数和原型混成的模式,是目前ECMAScript中使用最广泛、认同度最高的一种创建自定义类型的方法
  • 相关阅读:
    var、let、const
    面向女朋友自我介绍
    ES6——class
    一个错误引发的——对异步回调与for循环(小白错误,大神勿进)
    关于this
    关于作用域
    HTML5 8
    HTML5 7
    HTML5 6
    HTML5 4
  • 原文地址:https://www.cnblogs.com/liululu/p/5833802.html
Copyright © 2011-2022 走看看