首頁 > web前端 > js教程 > JavaScript的中物件建立與繼承原理

JavaScript的中物件建立與繼承原理

高洛峰
發布: 2016-11-28 15:51:01
原創
1067 人瀏覽過

物件建立:

當一個函式物件被建立時候,Function建構器產生的函式物件會執行類似這樣的程式碼:
this.prototype={constructor:this};
假設函式F
F用new方式建構物件時,物件的constructor被設定成這個F.prototype.constructor
如果函數在建立物件前修改了函數的prototype,會影響建立出來物件的construtor屬性
如:

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

繼承原理:

JavaScript中的繼承是使用原型鏈的機制,每個函數的實例都共用建構函式prototype屬性中定義的數據,要使一個類別繼承另一個,需要把父函式實例賦值到子函式的prototype屬性。且在每次new實例物件時,物件的私有屬性__proto__會被自動連接到建構函數的prototype。

instanceof就是尋找實例物件的私人prototype屬性鏈來決定是否為指定物件的實例


具體實例:
//instanceof實作
function Myinstanceof(obj,type)
{
function Myinstanceof(obj,type)
{ ; while(proto)
   {
       if(proto ===type.prototype)break;
       proto=proto.__proto__
} {}
function TreeView( ){}
TreeView.prototype=new View();//TreeView.prototype.__proto__=TreeView.prototype 自動完成

TreeView.prototype.constructor=TreeView;//修正constructor

var view=newtotype.constructor=TreeView;//修正constructor
var view=new TreeView();// TreeViewView();// view.__proto__=TreeView.prototype 自動完成
alert(view instanceof View); //true 查找到view.__proto__.__proto__時找到
alert(view instanceof TreeView); //true 找到view.__proto__時找到
alert(Myinstanceof(view,View));  //true
alert(Myinstanceof(view,TreeView)); //true
上面自訂的Myinstanceof就是自己實作的一個instanceof功能的函數,因為IE核心實例儲存prototype __proto__,所以Myinstanceof會無法通過,其他瀏覽器上應該都沒有問題



相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板