最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript對(duì)象創(chuàng)建及繼承原理實(shí)例解剖

 更新時(shí)間:2013年02月28日 10:50:20   作者:  
本文將用實(shí)例講解一下JavaScript對(duì)象創(chuàng)建及繼承原理:JavaScript中的繼承是使用原型鏈的機(jī)制,對(duì)象創(chuàng)建使用Function構(gòu)造器,感興趣的朋友可以詳細(xì)了解下本文,或許可以幫助到你
對(duì)象創(chuàng)建
當(dāng)一個(gè)函數(shù)對(duì)象被創(chuàng)建時(shí)候,F(xiàn)unction構(gòu)造器產(chǎn)生的函數(shù)對(duì)象會(huì)運(yùn)行類(lèi)似這樣的代碼:
復(fù)制代碼 代碼如下:

this.prototype={constructor:this};

假設(shè)函數(shù)F
F用new方式構(gòu)造對(duì)象時(shí),對(duì)象的constructor被設(shè)置成這個(gè)F.prototype.constructor
如果函數(shù)在創(chuàng)建對(duì)象前修改了函數(shù)的prototype,會(huì)影響創(chuàng)建出來(lái)對(duì)象的construtor屬性
如:
復(fù)制代碼 代碼如下:

function F(){};
F.prototype={constructor:'1111'};
var o=new F();//o.constructor===‘1111' true

繼承原理
JavaScript中的繼承是使用原型鏈的機(jī)制,每個(gè)函數(shù)的實(shí)例都共享構(gòu)造函數(shù)prototype屬性中定義的數(shù)據(jù),要使一個(gè)類(lèi)繼承另一個(gè),需要把父函數(shù)實(shí)例賦值到子函數(shù)的prototype屬性。并且在每次new實(shí)例對(duì)象時(shí),對(duì)象的私有屬性__proto__會(huì)被自動(dòng)連接到構(gòu)造函數(shù)的prototype。
instanceof就是查找實(shí)例對(duì)象的私有prototype屬性鏈來(lái)確定是否是指定對(duì)象的實(shí)例
具體實(shí)例
復(fù)制代碼 代碼如下:

//instanceof實(shí)現(xiàn)
function Myinstanceof(obj,type)
{
var proto=obj.__proto__;
while(proto)
{
if(proto ===type.prototype)break;
proto=proto.__proto__;
}
return proto!=null;
}
function View(){}
function TreeView(){}
TreeView.prototype=new View();//TreeView.prototype.__proto__=TreeView.prototype 自動(dòng)完成
TreeView.prototype.constructor=TreeView;//修正constructor
var view=new TreeView();//view.__proto__=TreeView.prototype 自動(dòng)完成
alert(view instanceof View); //true 查找到view.__proto__.__proto__時(shí)找到
alert(view instanceof TreeView); //true 查找到view.__proto__時(shí)找到
alert(Myinstanceof(view,View)); //true
alert(Myinstanceof(view,TreeView)); //true

上面自定義的Myinstanceof就是自己實(shí)現(xiàn)的一個(gè)instanceof功能的函數(shù),由于IE內(nèi)核實(shí)例存儲(chǔ)prototype不是__proto__,所以Myinstanceof會(huì)無(wú)法通過(guò),其他瀏覽器上應(yīng)該都沒(méi)有問(wèn)題

相關(guān)文章

最新評(píng)論

庄浪县| 宜良县| 台前县| 泰来县| 大悟县| 黄大仙区| 阜宁县| 丹东市| 阆中市| 印江| 清丰县| 聂拉木县| 平乡县| 惠州市| 德江县| 黑水县| 永德县| 略阳县| 绍兴县| 来宾市| 沂南县| 沙雅县| 琼结县| 恩施市| 宁化县| 青田县| 砀山县| 河曲县| 镇雄县| 保亭| 大新县| 内乡县| 阳朔县| 广东省| 陈巴尔虎旗| 镇坪县| 简阳市| 资中县| 汾西县| 湘潭县| 嘉鱼县|