1. 程式人生 > >三,前端---JS最基本的創建對象的方法

三,前端---JS最基本的創建對象的方法

多個 con return 定義 字面量 nbsp 調用 對象實例 this

1:工廠模式
  function createPerson(name, job){
    var person = new Object();
    person.name = name;
    person.job = job;
    person.sayName = function(){
      console.log(this.name);
  }
    return person;
  }
  var person1 = createPerson(‘A‘, ‘student‘);
  var person2 = createPerson(‘B‘, ‘Docter‘);
  可以無數次調用這個工廠模式,每次都會返回一個包含兩個屬性和一個方法的對象。工廠模式雖然解決了創建多個相似對象的問題,但是沒有解決對象識別的問題,既不能知道一個對象的類型。
2:構造函數模式


  function createPerson(name, job){
    this.name = name;
    this.job = job;
    this.sayName = function(){
      console.log(this.name);
    }
  }
  var person1 = new createPerson(‘C‘, ‘programmer‘);
  var person2 = new createPErson(‘D‘, ‘painter‘);
  沒有顯示的創建對象,使用new來調用這個構造函數,使用new後自動執行如下操作:
    ● 創建一個新對象
    ● 這個新對象會被執行[[prototype]]鏈接
    ● 這個新對象會被綁定到函數調用this
    ● 返回這個對象
  使用這個方式創建的對象可以檢測(instanceof)對象類型。但是使用構造函數創建對象,每個方法都要在實例上重新創建一次。
3:原型模式

  function Person(){}
  Person.prototype.name = ‘E‘;
  Person.prototype.job = ‘athlete‘;
  Person.prototype.sayName = function(){
    console.log(this.name);
  }
  var person1 = new Person();
  將信息直接添加到原型對象上。使用原型的好處是可以讓所有的實例對象共享它所包含的屬性和方法,不必在構造函數中定義對象實例信息。
4:原型的簡單模式
  function Person(){}
  Person.prototype = {
    name = ‘E‘;
    job = ‘athlete‘;
    sayName = function(){
      console.log(this.name);
    }
  }
  var person1 = new Person();
  將Person.prototype設置為等於一個以對象字面量形式創建的對象,但是會導致.constructor不在指向Person了。
  使用這種方式,完全重寫了默認的Person.prototype對象,因此 .constructor
也不會存在這裏。(對於constructor接下來會有更新)

三,前端---JS最基本的創建對象的方法