javascript對象的幾種建立方式整理

來源:互聯網
上載者:User

標籤:屏蔽   儲存   多個   對象   blog   nbsp   方法   on()   封裝   

1.原廠模式

//原廠模式雖然解決了建立多個相似對象的問題,但卻沒有解決對象識別的問題(即怎樣知道一個對象的類型)。

function createPerson(name,age,job){
  var o = new Object();
  o.name = name;
  o.age = age;
  o.job = job;
  o.sayName = function(){
    alert(this.name);
  };
  return o;
}
var person1 = createPerson(‘suga‘,29,‘singer‘);
var person2 = createPerson(‘bts‘,20,‘singer‘);
person1.sayName();
person2.sayName();

 

2.建構函式模式

function Person(name,age,job){
  this.name = name;
  this.age = age;
  this.job = job;
  this.sayName = function(){
    alert(this.name);
  };
}
var person1 = Person(‘suga‘,29,‘singer‘);
var person2 = Person(‘bts‘,20,‘singer‘);

 與原廠模式相比,具有以下特點:

  1. 沒有顯式建立對象;
  2. 直接將屬性和方法賦給了this對象;
  3. 沒有return語句;
  4. 要建立新執行個體,必須使用new操作符;(否則屬性和方法將會被添加到window對象)
  5. 可以使用instanceof操作符檢測物件類型

  建構函式的問題:

  建構函式內部的方法會被重複建立,不同執行個體內的同名函數是不相等的。可通過將方法移到建構函式外部解決這一問題,但面臨新問題:封裝性不好。

3. 原型模式

function Person(){}
Person.prototype.name = "suga";
Person.prototype.age = 29;
Person.prototype.job = "singer";
Person.prototype.sayName = function() {
  alert(this.name);
}

var person1=new Person();
var person2=new Person();
person1.name="果果";
alert(person1.name);--來自執行個體
alert(person2.name);--來自原型
當為對象執行個體添加一個屬性時,這個屬性就會屏蔽原型對象中儲存的同名屬性。

javascript對象的幾種建立方式整理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.