摘要:一偽類當一個函數(shù)對象被創(chuàng)建時,構(gòu)造器產(chǎn)生的函數(shù)對象會運行類似這樣的代碼新函數(shù)對象被賦予了一個屬性,他的值是一個包含屬性且屬性值為該新函數(shù)的對象。這個對象是存放繼承特征的地方。
一、偽類
當一個函數(shù)對象被創(chuàng)建時,F(xiàn)unction構(gòu)造器產(chǎn)生的函數(shù)對象會運行類似這樣的代碼:
this.prototype = { constructor: this};
新函數(shù)對象被賦予了一個prototype屬性,他的值是一個包含constructor屬性且屬性值為該新函數(shù)的對象。這個prototype對象是存放繼承特征的地方。
Function.method("new",function(){ //創(chuàng)建一個新對象,它繼承自構(gòu)造函數(shù)的原型對象 var that = Object.create(this.prototype); // 調(diào)用構(gòu)造函數(shù),綁定-this-到新對象上 var other = this.apply(that,arguments); //如果返回值不是一個對象,就返回該新對象 return (typeof other ==="object"&&other)||that; })
我們定義一個構(gòu)造器來擴充它的原型
var Mammal = function(name){ this.name=name; }; Mammal.prototype.get_name = function(){ return this.name; }; Mammal.prototype.says = function(){ return this.saying || ""; }
現(xiàn)在我們構(gòu)造一個實例
var myMammal = new Mammal("hello world!"); var name = myMammal.get_name();
我們構(gòu)造一個偽類來繼承Mammal,通過定義它的constructor函數(shù)并替換他的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();二、原型
構(gòu)造一個有用的對象開始,接著可以構(gòu)造更多和那個對象類似的對象。
Object.create方法構(gòu)造更多的實例三、函數(shù)化
運用模塊模式的繼承模式去保護隱私。
1、創(chuàng)建一個新對象,可以通過構(gòu)造一個對象字面量或者和new淺醉連用去調(diào)用一個構(gòu)造函數(shù),或者使用Object.create構(gòu)造一個已經(jīng)存在的對象的新實例,或者調(diào)用任意一個會韓慧一個對象的函數(shù)
2、有選擇的定義私有實例變量和方法。
3、給這個新對象擴充方法。
4、返回那個新對象
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/107680.html
摘要:通過可取可取的他們所屬對象的上下文的方法稱為公共方法函數(shù)調(diào)用模式當一個函數(shù)并非一個對象的屬性時,那么它就是被當做一個函數(shù)來調(diào)用的,以此模式調(diào)用函數(shù),被綁定到了全局對象。 前言: 前端這兩年的新技術(shù)鋪天蓋地,各種框架、工具層出不窮眼花繚亂。最近打算好好復習下 js 基礎,夯實的基礎才是學習新技術(shù)的基石。本文作為讀書筆記簡單的總結(jié)下 js 函數(shù)的基礎知識。 一、函數(shù)對象 JavaScr...
摘要:深入之繼承的多種方式和優(yōu)缺點深入系列第十五篇,講解各種繼承方式和優(yōu)缺點。對于解釋型語言例如來說,通過詞法分析語法分析語法樹,就可以開始解釋執(zhí)行了。 JavaScript深入之繼承的多種方式和優(yōu)缺點 JavaScript深入系列第十五篇,講解JavaScript各種繼承方式和優(yōu)缺點。 寫在前面 本文講解JavaScript各種繼承方式和優(yōu)缺點。 但是注意: 這篇文章更像是筆記,哎,再讓我...
摘要:前提中閉包無處不在,你只需要能夠識別并擁有它。一實質(zhì)問題當函數(shù)可以記住并訪問所在的詞法作用域是,就產(chǎn)生了閉包。依然持有該作用域的引用。延遲函數(shù)的回調(diào)會在循環(huán)結(jié)束時才執(zhí)行。每個延遲函數(shù)都會講在每次迭代中創(chuàng)建的作用域封閉起來。 前提:JavaScript中閉包無處不在,你只需要能夠識別并擁有它。閉包是基于詞法作用域書寫代碼時自然產(chǎn)生的結(jié)果。 一、實質(zhì)問題 當函數(shù)可以記住并訪問所在的詞法作用...
摘要:對象字面量數(shù)組運行數(shù)組包括任意混合類型的數(shù)組。屬性的值是這些數(shù)組的最大整數(shù)屬性名加上。它等于數(shù)組里的屬性的個數(shù)??梢允褂孟驍?shù)組中增加元素,也可以用方式加入到數(shù)組中。六指定初始值數(shù)組通常不會預置頂。 一、數(shù)組字面量 數(shù)組字面量提供了一種非常方便的創(chuàng)建數(shù)組的表達法。 一個數(shù)組字面量是在一對方括號中包圍零個或多個用逗號分隔的值的表達式。 對象字面量數(shù)組: var numbers_obje...
摘要:繼承繼承子類可以使用父類的所有功能,并且對這些功能進行擴展。類繼承父類父類添加共有方法子類繼承父類子類添加共有方法其中最核心的一句代碼是將原型指向了父類的原型對象。 繼承 繼承:子類可以使用父類的所有功能,并且對這些功能進行擴展。繼承的過程,就是從一般到特殊的過程。 類繼承 // 父類 var supperClass = function() { var id = 1; thi...
閱讀 2976·2021-10-19 10:09
閱讀 3189·2021-10-09 09:41
閱讀 3456·2021-09-26 09:47
閱讀 2776·2019-08-30 15:56
閱讀 648·2019-08-29 17:04
閱讀 1038·2019-08-26 11:58
閱讀 2564·2019-08-26 11:51
閱讀 3423·2019-08-26 11:29