zoukankan      html  css  js  c++  java
  • javascript 高级程序设计 十二

    1、组合使用原型模式和构造函数模式:

          由于原型模式创建对象也有它的局限性------有智慧的人就把原型模式和构造函数模式进行了组合。




    function Person(name, age, job){//用构造函数模式来定义每个实例化对象中特有的属性 this.name = name; this.age = age; this.job = job; this.friends = ['Shelby', 'Court']; } Person.prototype = {//用原型模式来定义共享属性和方法 constructor: Person,//当重写了prototype后,prototype中的constructor就不会指向方法对象而是指向构造函数,所以我们要重新定义constructor属性使其指向Person对象。 sayName: function(){ alert(this.name); } } var person1 = new Person('Tom', 12, 'engineer'); var person2 = new Person('Kim', 10, worker); person1.friends.push('Nini'); alert(person1.friends);//Shelby, Court, Nini alert(person2.frnends);//Shelby, Court

     当然,JS还有很多创建对象的模式:动态原型模式(和构造函数模式很像)、寄生构造函数模式、稳妥构造函数模式等,我就不在赘述了。

    如果感兴趣就请看《JavaScript高级程序设计 (第三版)》的第六章。。。

    继承开一个小头

      实现原型链的基本模式

    function SuperType(){
      this.prototype = true;
    }
    SuperType.prototype.getSuperValue = function(){
      alert(this.prototype);
    }
    function SubType (){
      this.prototype = false;
    }
    //继承
    SubType.prototype = new SuperType();
    SubType.prototype.getSubValue = function(){
      alert(this.prototype);
    }
    var subInstance = new SubType();
    subInstance.getSuperValue();
    

      

  • 相关阅读:
    设计模式03
    设计模式02
    设计模式01
    HTTP
    C++ 编程学习(六) 函数
    C++编程学习(五) C++ 存储类
    C++编程学习(四)声明/枚举
    ROS常见问题(一) 安装ROS时sudo rosdep init指令报错 最全解决方法
    ROS常用命令或经常碰到的问题
    Ubuntu16.04 在Windows10 系统下的安装(双系统)
  • 原文地址:https://www.cnblogs.com/wang985850293/p/5394026.html
Copyright © 2011-2022 走看看