zoukankan      html  css  js  c++  java
  • javascript的面向对象程序设计(二)

    2.4.5 原型对象的问题;

    原型模式最大的特征是,在原型定义的属性,是被所有的实例所共有的,假如,原型对象有个属性时数组,你在实例上对这个数组添加元素,从而会改变所有实例都会受到影响

    2.5

    组合使用构造函数和原型模式;

    代码如下:

    function Person(name,age,job){
    this.name = name;
    this.age = age;
    this.job = job;
    this.friend = ["zht","zgr"]
    
    }
    Person.prototype={
    constructor:Person,
     sayName:function(){
        alert(this.name);
     }
    
    }
    View Code

    这种模型方式集上述两种模式的长处;

    2.6 动态原型模式;

    还有一种方式,能够把代码都放在一个构造函数中;代码如下:

    function Person(name,age,job){
     this.name = name;
     this.age = age;
     this.job = job;
     if(typeof this.sayName != "function"){
         Person.prototype.sayName = function(){
            alert(this.name);
         }
     }
    }

    注意:if语句的地方;这里只有在sayName方法不存在的情况下,才会把它加到原型对象中,也就是说,这段代码只有初次调用这个构造函数的时候才会执行;

    2.6 寄生构造函数模式;

    暂时对寄生构造函数的理解跟工厂模式没有差,除了把封装的那个函数叫做构造函数外,其他与工厂模式是一样的;(以后稍加学习);

    2.7 稳妥构造函数模式;

    所谓稳妥对象,指的是没有公共属性,而且其方法也不调用this对象;根据稳妥的要求,我们把Person的构造函数重写下,代码如下:

    function Person(name,age,jon){
      var o = new Object();
      //可以在这里添加私有变量和方法;
     // 添加方法;
     o.sayName = function(){
      alert(name);
    
     }
    // 返回对象;
    return o;
    }
  • 相关阅读:
    颜色空间之CIE2000色差公式
    爱做梦的人-人的特性之一
    Lua文件操作和串行化
    Lua文件操作和串行化
    Lua调用C++带参数的方法
    Lua调用C++带参数的方法
    C++对Lua中table进行读取、修改和创建
    C++对Lua中table进行读取、修改和创建
    C++获取Lua全局变量和执行Lua多参数多返回值函数
    C++获取Lua全局变量和执行Lua多参数多返回值函数
  • 原文地址:https://www.cnblogs.com/zht0915/p/4674041.html
Copyright © 2011-2022 走看看