1. 程式人生 > >JS建立物件的幾種方式

JS建立物件的幾種方式

最近在看javascript高階程式設計,其中對物件的建立做了具體的闡述,綜合起來,總結了下(je知識庫javascript專欄由這方面的教程,有興趣的可以去知識庫看看)

第一種模式:工廠方式

  1. var lev=function(){  
  2.    return"啊打";  
  3. };  
  4. function Parent(){  
  5.        var  Child = new Object();  
  6.        Child.name="李小龍";  
  7.        Child.age="30";  
  8.        Child.lev=lev;  
  9.      return Child;  
  10. };  
  11. var  x = Parent();  
  12. alert(x.name);  
  13. alert(x.lev());  

 說明:

1.在函式中定義物件,並定義物件的各種屬性,,雖然屬性可以為方法,但是建議將屬性為方法的屬性定義到函式之外,這樣可以避免重複建立該方法

2.引用該物件的時候,這裡使用的是 var x = Parent()而不是 var x = new Parent();因為後者會可能出現很多問題(前者也成為工廠經典方式,後者稱之為混合工廠方式),不推薦使用new的方式使用該物件

3.在函式的最後返回該物件

4.不推薦使用這種方式建立物件,但應該瞭解

第二種模式:建構函式方式

  1. var
     lev=function(){  
  2.    return"啊打";  
  3. };  
  4. function Parent(){  
  5.        this.name="李小龍";  
  6.        this.age="30";  
  7.        this.lev=lev;  
  8. };  
  9. var  x =new  Parent();  
  10. alert(x.name);  
  11. alert(x.lev());  

說明:

1.與工廠方式相比,使用建構函式方式建立物件,無需再函式內部重建建立物件,而使用this指代,並而函式無需明確return

2.同工廠模式一樣,雖然屬性的值可以為方法,扔建議將該方法定義在函式之外

3..同樣的,不推薦使用這種方式建立物件,但仍需要了解

第3種模式:原型模式

  1. var lev=function(){  
  2.    return"啊打";  
  3. };  
  4. function Parent(){  
  5. };  
  6.   Parent.prototype.name="李小龍";  
  7.   Parent.prototype.age="30";  
  8.  Parent.prototype.lev=lev;  
  9. var  x =new  Parent();  
  10. alert(x.name);  
  11. alert(x.lev());  

 說明:

1.函式中不對屬性進行定義

2.利用prototype屬性對屬性進行定義

3.同樣的,不推薦使用這樣方式建立物件

 第四種模式:混合的建構函式,原型方式(推薦)

  1. function Parent(){  
  2.   this.name="李小龍";  
  3.  this.age=32;  
  4. };   
  5. Parent.prototype.lev=function(){  
  6.    returnthis.name;  
  7. };;  
  8. var  x =new  Parent();  
  9. alert(x.lev());  

 說明:1.該模式是指混合搭配使用建構函式方式和原型方式

          2.將所有屬性不是方法的屬性定義在函式中(建構函式方式)

將所有屬性值為方法的屬性利用prototype在函式之外定義(原型方式)

3.推薦使用這樣方式建立物件,這樣做有好處和為什麼不單獨使用建構函式方式和原型方式,由於篇幅問題這裡不予討論

第五種模式:動態原型方式

  1. function Parent(){  
  2.   this.name="李小龍";  
  3.  this.age=32;  
  4. ;  
  5.  if(typeof Parent._lev=="undefined"){  
  6.      Parent.prototype.lev=function(){  
  7.                returnthis.name;  
  8.      }  
  9.      Parent._lev=true;  
  10.  }  
  11. };   
  12. var  x =new  Parent();  
  13. alert(x.lev());  

 說明:

1.動態原型方式可以理解為混合建構函式,原型方式的一個特例

2.該模式中,屬性為方法的屬性直接在函式中進行了定義,但是因為

  1. if(typeof Parent._lev=="undefined"){  
  2.           Parent._lev=true;}  

 
從而保證建立該物件的例項時,屬性的方法不會被重複建立

3.,推薦使用這種模式

相關推薦

JS建立物件不同方法詳解

1、工廠模式 弊端:沒有解決物件的識別問題,即怎麼知道一個物件的型別。  2、建構函式模式   與工廠模式相比:  1、沒有顯式的建立物件  2、直接將屬性和方法賦給了this物件  3、沒有return語句  要建立person的例項,必須使用new操作符,

JS 之函式定義 & 建立物件方式

JS函式建立三種方式 JS建立物件三種方式 一、javaScript 函式建立的三種方式 <html> <head> <meta http-equiv="Content-Type" content="text/htm

深入研究Spring-IoC :容器建立方式

1.前言 本文為對tiny-spring的學習解讀,程式碼參考自tiny-spring。一個手寫的Spring簡易版框架。 前面已經提到了Spring IOC容器的建立大致分為3個步驟。但是這個三個步驟是有一個演進的過程的,Spring容器建立方式前後有6種,從最基本的例項化建立

vue常用建立元件方式總結

最近一週需要使用vue開發一個谷歌擴充套件外掛,但是又不能在vue-cli腳手架中開發,所以只能單獨引入vue.js整個包進行指令碼植入開發。引入vue.js就代表著不能用import、require之類的引入單檔案元件檔案,只能在檔案中開發,或者多個js檔案分先後順序植入開發,然後就出現了一個尷尬

Windows程序間共享核心物件方式

核心物件的控制代碼是程序相關的,這樣更可靠,更安全;Windows提供下列N種機制來允許程序共享核心物件。 使用物件控制代碼繼承 只有程序間存在父子關係才能使用物件控制代碼繼承;系統會遍歷父程序的控制代碼表將所有有效的控制代碼完整的複製到子程序的控制代碼表中(這

執行緒和程序的關係 ----執行緒建立方式

程序是一個應用程式在處理機上的一次執行過程,他是一個動態的概念 ,執行緒是程序的一部分是程式執行的最小單元 一個程序中有多個執行緒 個人理解 :             

js建立函式3方式

建立函式3種方式: (1)宣告式 解析器會先讀取函式宣告,並使其在執行任何程式碼之前可以訪問; function Fn(x,y){ return x + y; } (2)匿名式 必須等到解析器執行到它所在的程式碼行才會真正被解釋執行 var

struts2建立action方式有什麼區別?

 當我們在寫action的時候,可以實現Action介面,也可以繼承Actionsupport這個類.到底這兩個有什麼區別呢? Action介面有: public static final java.lang.String SUCCESS = "success"; publ

Drupal 引入JS檔案的方式

1、在 theme.info 中,通過增加 scripts 節點的方式增加JS檔案,如 scripts[] = foo.js 2、在 template.php 中,DP提供了以下檔案來載入JS檔案 Drupal 6 中,使用以下方式:

在html中嵌入js程式碼的方式

1.最常用:使用script標籤的src屬性 <script>標籤包含src屬性,這個屬性可以指定包含js程式碼的檔案路徑,使用示例如下: 1.首先在工程新建一個javascript目錄,在目錄下新建demo.js檔案,檔案內容如下 function sho

json建立方式的示例

JSON(JavaScript Object  Notation)一種簡單的資料格式,比xml更輕巧。JSON是JavaScript原生格式,這意味著在JavaScript中處理JSON資料不需要任何特殊的API或工具包。  JSON的規則很簡單:物件是一個無序的“‘名稱/

客觀面試題--8.執行緒的生命週期是什麼?執行緒建立方式?

1.執行緒的生命週期執行緒是一個動態執行的過程,它也有一個從產生到死亡的過程。(1)生命週期的五種狀態新建(new Thread)當建立Thread類的一個例項(物件)時,此執行緒進入新建狀態(未被啟動)。例如:Thread  t1=new Thread();就緒(runna

建立物件方式&&new關鍵字和newInstance()方法的區別

轉載:http://www.kuqin.com/shuoit/20160719/352659.html 用最簡單的描述來區分new關鍵字和newInstance()方法的區別: newInstance: 弱型別。低效率。只能呼叫無參構造。 new: 強型別。相對高效。能呼叫

JS提交請求方式

轉自http://zhangzhi199129.iteye.com/blog/1743487 我們經常需要通過js來提交表單或者超連結 1.js提交表單( .submit()方法提交表單 ) function doSearch(){ var action ="<%=

js 建立物件方式總結

第一種 建構函式建立 var Person = new Object(); Person.name = 'nike'; Person.age = 29; console.log(Person) 這串程式碼建立了Object 引用型別的一個新例項

js-JavaScript常見的建立物件方式

1、通過Object建構函式或物件字面量建立單個物件   這些方式有明顯的缺點:使用同一個介面建立很多物件,會產生大量的重複程式碼。為了解決這個問題,出現了工廠模式。 2、工廠模式   考慮在ES中無法建立類(ES6前),開發人員發明了一種函式,用函式來封裝以特定介面建立物件的細節。(實現起來是在一個函

JS建立物件方式

最近在看javascript高階程式設計,其中對物件的建立做了具體的闡述,綜合起來,總結了下(je知識庫javascript專欄由這方面的教程,有興趣的可以去知識庫看看) 第一種模式:工廠方式 var lev=function(){      return"啊打";   };   function P

JS建立物件建立方式

第一種模式:工廠方式 Js程式碼    var lev=function(){      return"啊打";   };   function Parent(){          var  Child = new Object();          Ch

js建立物件常用方式

第一種模式:工廠方式 Js程式碼  var lev=function(){      return "啊打";   };   function Parent(){          var  Child = new Object();          Child.name="李小龍";      

JS 建立物件方式

<script type="text/javascript">/**//* 建立物件的幾種方式: */// 1. 工廠方法:能建立並返回特定型別物件的工廠函式(factory function).function createCar(sColor){     var car =new Object