• 构造函数和原型模式混合使用


    一天天的过去了,感觉在混日子,从新捡起js高程,感觉似曾相识,又很陌生,果然不同时间段看到的东西不一样,准备每天花一小时,在高程上,每天一博客,写给懒惰的自己

    构造函数

     function Peson(name,age,job) {
        this.age = age;
        this.name = name;
        this.job = job
    }
    var peson1 = new Peson(xx, 1, dd)
    var peson2 = new Peson(xm,2 cc)
    
    \ peson1 和peson2new出来两个实例,相当于构造函数的方法执行了两次,所以可以把相同的放在原型属性中,不同的s时候在用这种模式
    

    原型开发模式:

     Person.prototype = {
    constructor : Person,
    sayName : function(){
    alert(this.name);
    }
    }
    var peson1 = new Peson()
    var peson2 = new Peson()
    peson1.sayName() === peson2.sayName()
    在原型中,两个实例公用一个方法
    

    混合使用各取所得如:

     function Person(name, age, job){
    this.name = name;
    this.age = age;
    this.job = job;
    this.friends = ["Shelby", "Court"];
    }
    Person.prototype = {
    constructor : Person,
    sayName : function(){
    alert(this.name);
    }
    }
    var person1 = new Person("Nicholas", 29, "Software Engineer");
    var person2 = new Person("Greg", 27, "Doctor");
    person1.friends.push("Van");
    alert(person1.friends); //"Shelby,Count,Van"
    alert(person2.friends); //"Shelby,Count"
    alert(person1.friends === person2.friends); //false
    alert(person1.sayName === person2.sayName); //true
    

    在这个例子中,实例属性都是在构造函数中定义的,而由所有实例共享的属性 constructor 和方法 sayName() 则是在原型中定义的。而修改了 person1.friends (向其中添加一个新字符串),并不会影响到 person2.friends ,因为它们分别引用了不同的数组

  • 相关阅读:
    Windows 下使用 GNUstep 编译并运行 Objective-C 程序
    【Objective-C】Windows下Objective-C开发环境配置
    Windows远程桌面连接Mac OS X
    Windows下编译objective-C
    自动更新开奖数据的excel文件,供大家下载
    总结一下这几天学习django的心得
    Windows上python开发--2安装django框架
    Centos 如何安装Django环境
    Centos 6.4 python 2.6 升级到 2.7
    centos启用ftp功能
  • 原文地址:https://www.cnblogs.com/webwangjin/p/6763333.html
Copyright © 2020-2023  润新知