摘要:一偽類當一個函數對象被創建時,構造器產生的函數對象會運行類似這樣的代碼新函數對象被賦予了一個屬性,他的值是一個包含屬性且屬性值為該新函數的對象。這個對象是存放繼承特征的地方。
一、偽類
當一個函數對象被創建時,Function構造器產生的函數對象會運行類似這樣的代碼:
this.prototype = { constructor: this};
新函數對象被賦予了一個prototype屬性,他的值是一個包含constructor屬性且屬性值為該新函數的對象。這個prototype對象是存放繼承特征的地方。
Function.method("new",function(){ //創建一個新對象,它繼承自構造函數的原型對象 var that = Object.create(this.prototype); // 調用構造函數,綁定-this-到新對象上 var other = this.apply(that,arguments); //如果返回值不是一個對象,就返回該新對象 return (typeof other ==="object"&&other)||that; })
我們定義一個構造器來擴充它的原型
var Mammal = function(name){ this.name=name; }; Mammal.prototype.get_name = function(){ return this.name; }; Mammal.prototype.says = function(){ return this.saying || ""; }
現在我們構造一個實例
var myMammal = new Mammal("hello world!"); var name = myMammal.get_name();
我們構造一個偽類來繼承Mammal,通過定義它的constructor函數并替換他的prototype為一個Mamma
var Cat = function(name){ this.name =name; this.saying= "meow"; }
替換Cat.prototype為一個新的Mammal實例
Cat.prototype =new Mammal();
擴充新原型對象增加get_name方法
Cat.prototype.get_name = function(){ return this.says()+""+this.name+""+this.says(); }; var myCat =new Cat("wsm"); var says = myCat.says(); var name= myCat.get_name();二、原型
構造一個有用的對象開始,接著可以構造更多和那個對象類似的對象。
Object.create方法構造更多的實例三、函數化
運用模塊模式的繼承模式去保護隱私。
1、創建一個新對象,可以通過構造一個對象字面量或者和new淺醉連用去調用一個構造函數,或者使用Object.create構造一個已經存在的對象的新實例,或者調用任意一個會韓慧一個對象的函數
2、有選擇的定義私有實例變量和方法。
3、給這個新對象擴充方法。
4、返回那個新對象
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107680.html
摘要:深入之繼承的多種方式和優缺點深入系列第十五篇,講解各種繼承方式和優缺點。對于解釋型語言例如來說,通過詞法分析語法分析語法樹,就可以開始解釋執行了。 JavaScript深入之繼承的多種方式和優缺點 JavaScript深入系列第十五篇,講解JavaScript各種繼承方式和優缺點。 寫在前面 本文講解JavaScript各種繼承方式和優缺點。 但是注意: 這篇文章更像是筆記,哎,再讓我...
摘要:前提中閉包無處不在,你只需要能夠識別并擁有它。一實質問題當函數可以記住并訪問所在的詞法作用域是,就產生了閉包。依然持有該作用域的引用。延遲函數的回調會在循環結束時才執行。每個延遲函數都會講在每次迭代中創建的作用域封閉起來。 前提:JavaScript中閉包無處不在,你只需要能夠識別并擁有它。閉包是基于詞法作用域書寫代碼時自然產生的結果。 一、實質問題 當函數可以記住并訪問所在的詞法作用...
摘要:繼承繼承子類可以使用父類的所有功能,并且對這些功能進行擴展。類繼承父類父類添加共有方法子類繼承父類子類添加共有方法其中最核心的一句代碼是將原型指向了父類的原型對象。 繼承 繼承:子類可以使用父類的所有功能,并且對這些功能進行擴展。繼承的過程,就是從一般到特殊的過程。 類繼承 // 父類 var supperClass = function() { var id = 1; thi...
閱讀 2907·2021-10-19 10:09
閱讀 3125·2021-10-09 09:41
閱讀 3370·2021-09-26 09:47
閱讀 2687·2019-08-30 15:56
閱讀 590·2019-08-29 17:04
閱讀 979·2019-08-26 11:58
閱讀 2505·2019-08-26 11:51
閱讀 3352·2019-08-26 11:29