Quick actions

cmd+k|ctrl+k

Navigation

Languages

prototype和__proto__

Snippet info

Language

JavaScript

Visibility

public

Author

pheker

Created

2017-07-28T15:16:45Z

Updated

2017-07-28T15:16:45Z


//据说能理解这三行的,js原型已经攻克了 ? !!!

function Fun(){}
var a = new Fun();
console.log("0:\t",a.__proto__ == Fun.constructor.prototype.__proto__);      //false

// 如何 解释/理解 上面的三行代码 ?


//so

//由    a.__proto__ == Fun.prototype 
        console.log("11:\t", a.__proto__ == Fun.prototype);
//得1   a.__proto__.__proto__ == Fun.prototype.__proto__ == Object.prototype
        console.log("12:\t", a.__proto__.__proto__ == Fun.prototype.__proto__,Fun.prototype.__proto__ == Object.prototype);

//由    Fun.constructor.prototype == Fun.__proto__ == Function.prototype 
        console.log("21:\t", Fun.constructor.prototype == Fun.__proto__, Fun.__proto__ == Function.prototype );
//得2   Fun.constructor.prototype.__proto__ == Fun.__proto__.__proto__ == Function.prototype.__proto__ == Object.prototype
        console.log("22:\t",
                    Fun.constructor.prototype.__proto__ == Fun.__proto__.__proto__,
                    Fun.__proto__.__proto__ == Function.prototype.__proto__,
                    Function.prototype.__proto__ == Object.prototype
                );
//由1,2
//得3   a.__proto__.__proto__  == Fun.constructor.prototype.__proto__
        console.log("31:\t",a.__proto__.__proto__  == Fun.constructor.prototype.__proto__);
//so    a.__proto__ != a.__proto__.__proto__
        console.log("32:\t",a.__proto__ != a.__proto__.__proto__);
//so    Fun.prototype != Object.prototype
        console.log("33:\t",Fun.prototype != Object.prototype);
//because Fun.prototype.__proto__ == Object.prototype
        console.log("34:\t",Fun.prototype.__proto__ == Object.prototype);

//附 prototype和__proto__关系图 
//  http://note.youdao.com/noteshare?id=94f8bc1e9503902bd83d02f2a6706bec&sub=1EDCC088D57B4DBD891473B3F88D2D03
//  http://note.youdao.com/noteshare?id=29af08eef11853ea53590d8d54f9a633&sub=EFB303175C134715A582CB1923492944



INFO