zoukankan      html  css  js  c++  java
  • javascript 高级编程系列

    1. 工厂模式

     1 function createPerson(name, age)
     2  {
     3      var obj = {};
     4      obj.name = name;
     5      obj.age = age;
     6      obj.getName = function(){
     7          return this.name;
     8      };
     9      return obj;
    10 }
    11 
    12 var person = createPerson('leon', 30);

    2. 构造函数模式

     1 function Person(name, age)
     2 {
     3     this.name = name;
     4     this.age = age;
     5     this.getName = function(){
     6         return this.name;
     7     };
     8 }
     9 
    10 var person = new Person('leon', 30 );

    3. 原型模式 (多个对象实例之间共享属性值和方法)

     1 function Person(){
     2 
     3 }
     4  
     5 Person.prototype = {
     6      constructor: Person,
     7      name: 'leon',
     8      age: 30,
     9      getName: function(){
    10          return this.name;
    11      }
    12 };
    13 
    14 var person = new Person();

    4. 组合构造函数和原型模式 (构造函数模式与原型模式的结合,属性在构造函数中进行定义,方法在原型中定义)

     1 function Person(name, age)
     2 {
     3      this.name = name;
     4      this.age = age;
     5 }
     6 
     7 Person.prototype = {
     8     constructor: Person,
     9     getName :  function(){
    10           return this.name;
    11     }
    12 };
    13 
    14 var person = new Person('leon', 30 );

    5.动态原型模式 (原型模式的改进为了更好的体现封装)

     1 function Person(name, age)
     2 {
     3       this.name = name;
     4       this.age = age;
     5       if( typeof this.getName != 'function'){
     6           Person.prototype.getName = function(){
     7               return this.name;
     8           }
     9       }
    10 }

    6. 寄生构造函数模式 (工厂模式与构造函数的结合)

     1 function Person(name, age)
     2  {
     3      var obj = {};
     4      obj.name = name;
     5      obj.age = age;
     6      obj.getName = function(){
     7          return this.name;
     8      };
     9      return obj;
    10 }
    11 
    12 var person = new Person('leon', 30);

    7. 稳妥构造函数模式 (工厂模式的安全版,无公共属性,方法中无this引用)

     1 function Person(name, age)
     2  {
     3      var obj = {};
     4      var name =  name;
     5      var age  = age;
     6      obj.getName = function(){
     7          return name;
     8      };
     9      return obj;
    10 }
    11 
    12 var person = Person('leon', 30);
  • 相关阅读:
    强联通 HDU 1269
    zznu 1255 数字统计(数位DP, 数学方法)
    POJ Round Numbers(数位DP)
    #1033 : 交错和
    XHXJ's LIS
    吉哥系列故事——恨7不成妻
    数字0-9的数量
    Balanced Number
    BALNUM
    F(x)
  • 原文地址:https://www.cnblogs.com/xiaodi-js/p/5926077.html
Copyright © 2011-2022 走看看