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


    一天天的过去了,感觉在混日子,从新捡起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 ,因为它们分别引用了不同的数组

  • 相关阅读:
    设计模式——单例模式的一种比较好的写法
    设计模式——观察者模式
    Java中的注解原来是这么用的
    TCP三次握手 四次挥手
    Mat转IplImage IplImage转Mat
    《Android开发艺术探索》读书笔记——Cha3.2.2使用动画实现View的滑动
    11第十二天DBUtils
    Java中几种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)
    10第十一天JDBC事务控制管理
    09重点复习
  • 原文地址:https://www.cnblogs.com/webwangjin/p/6763333.html
Copyright © 2020-2023  润新知