js中的原型以及原型鏈

在js中原型是每一個構造函數的屬性:函數

這個算 js 核心概念的一部分spa

var f1 = new Foo();

對象 f1 的構造函數就是 Foo , f1的原型 __proto__ 就指向構造函數 Foo.prototype

prototype

 

能夠吧代碼複製一份在你控制檯看看3d

function GetNum() {
        alert('1');
    }
    var a=new GetNum;
    console.log(GetNum);
    console.log(a);
    console.log(a.__proto__);
    console.log(GetNum.prototype) ;
    console.log(GetNum.__proto__);
    console.log(GetNum.prototype.__proto__) ;
    console.log(Object.prototype);
    console.log(Object.prototype.__proto__);
打印出來會看到:
a.__proto__===GetNum.prototype//true
 
 
GetNum.prototype.__proto__===Object.prototype//true
 
Object.prototype.__proto__//null------->對象這個類沒有對應的上一級原型鏈了,他就是原型鏈的頂端
打印出來能夠看到Object.prototype是這樣的:他沒有這個__proto__屬性
 
 
 
在看一下這個:這裏能夠用對象的toStrin方法進行數據類型的判斷,
var getType=Object.prototype.toString;
console.log(Object.prototype.toString.call(Object));//[object Function]   ---->對象自己也是一個最大的構造函數
因此說原型就是每一個構造函數的__proto__屬性,它指向對應的類的prototype,
例如能夠new date=new Date;
那麼date__proto__指向Date這個類的prototype,可是最後仍是會指向Object.prototype
var  date=new Date;
console.log(date.__proto__);
console.log(Date.prototype);
date.__proto__===Date.prototype//true
原型鏈就是這樣一個一個原型組成的一級一級向上查找的鏈條。
相關文章
相關標籤/搜索