1. 程式人生 > >JavaScript_構造函數/原型/實例對象的關系

JavaScript_構造函數/原型/實例對象的關系

JavaScript 原型鏈

技術分享圖片
1.所有的實例對象都有隱式原型屬性。
2.每一個函數function都有一個prototype顯示原型屬性。
3.對象的隱式原型的值為其對應構造函數的顯式原型的值。
4.函數的prototype屬性: 在定義函數時自動添加的, 默認值是一個空Object對象。
5.對象的proto屬性: 創建對象時自動添加的, 默認值為構造函數的prototype屬性值。
6.function Foo{}等於var Foo = new Function()所以有隱式原型屬性,即所有函數都有隱式和顯示原型屬性。
7.所有函數的隱式原型都相等,都是new Function產生的。
8.function Function()既有顯示原型屬性也具有隱式原型屬性且相同,說明Function=new Function。
9.function Object()的隱式原型等於function Function的顯示原型,進一步說明每個函數都是Function的實例(包括他本身)。
10.函數的顯示原型指向的對象, 默認是空的Object實例對象,單Object不滿足。
註:Function的顯示原型也是Object的實例
11.Object原型對象是原型鏈的盡頭,即null

function Fn(){
            this.test1 = function(){
                console.log(‘test1()‘);
            };
        }

        Fn.prototype.test2 = function(){
            console.log(‘test2()‘);
        };

        var fn = new Fn();

        console.log(Fn.prototype instanceof Object)//true
        console.log(Object.prototype instanceof Object)//false
        console.log(Function.prototype instanceof Object)//true
        console.log(Function.__proto__===Function.prototype)//true
        console.log(Object.prototype.__proto__)//null

JavaScript_構造函數/原型/實例對象的關系