• 6.原型对象的问题




    // 原型对象的缺点:省略了为构造函数传递初始化参数这一环节,结果所有的实例在默认情况下都取的相同的属性值
    // 原型模式的最大问题是由其共享的性质导致的
    // 原型中所有属性是被很多实例共享的,这种共享对于函数非常合适,但对于包含引用类型值的属性来说,问题就比较多了

    function Person(){

    }

    Person.prototype={
    constructor:Person,
    name:"summer",
    age:20,
    job:"enginner",
    friends:["su1","su2"],
    sayName:function(){
    console.log(this.name);
    }
    }

    var person1=new Person();
    var person2=new Person();
    person1.friends.push("su3");
    console.log(person1.friends); // ["su1", "su2", "su3"]
    console.log(person2.friends); // ["su1", "su2", "su3"]
    console.log(person1.friends===person2.friends); // true

    // 由于friends数组存在于Person.prototype中,而非person1中,因此在person2.friends中也会反映出来
    // 但是,一般情况下,我们的要求是实例要有属于自己的属性,因此,很少有人单独使用原型模式
  • 相关阅读:
    计算机的基本存储单位
    挖坑
    HEOI2017 游记
    bzoj4815 [Cqoi2017]小Q的表格
    bzoj4817 [Sdoi2017]树点涂色
    hdu5824 graph
    4.5&4.7联考题解
    高飞
    无题
    51Nod 算法马拉松23 开黑记
  • 原文地址:https://www.cnblogs.com/liululu/p/5833472.html
Copyright © 2020-2023  润新知