• 创建对象 之 组合使用构造函数模式和原型模式




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

    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中使用最广泛、认同度最高的一种创建自定义类型的方法
  • 相关阅读:
    apue学习笔记(第十五章 进程间通信)
    apue学习笔记(第十四章 高级I/O)
    apue学习笔记(第十三章 守护进程)
    各种仪器销售说明网站
    专业英语分类和查询
    c#网格控件,Excel控件
    sqlite支持linq
    使WebDev.WebServer.exe 当web服务器
    zip压缩文件测试
    c++爬虫子
  • 原文地址:https://www.cnblogs.com/liululu/p/5833802.html
Copyright © 2020-2023  润新知