instanceof

        // instanceof  内部实现原理 
        console.log(instance_of(Function, Function));
        function instance_of(L, R) { 
            var O = R.prototype;
            L = L.__proto__; 
            while (true) {
                if (L === null)
                    return false;
                if (O === L) 
                    return true;
                L = L.__proto__;
            }
        }
        
        Function instanceof Function
        //right: Function.prototype   ( Function 函数 对应的匿名函数对象 )
        //left: Function.__proto__    ( Function 函数 对应的匿名函数对象 )

        Object instanceof Function;
        //right: Function.prototype   ( Function 函数 对应的匿名函数对象 )
        //left: Object.__proto__    ( Function 函数 对应的匿名函数对象 ) 

        Object instanceof Object
        //right: Object.prototype   ( Object 函数 对应的原型对象 )
        //left: Object.__proto__    ( Function 函数 对应的匿名函数对象 )    Object.__proto__ .__proto__  ( Object 函数 对应的原型对象 )

        Function instanceof Object;
        //right: Object.prototype   ( Object 函数 对应的原型对象 )
        //left: Function.__proto__    ( Function 函数 对应的匿名函数对象 )    Function.__proto__.__proto__    ( Object 函数 对应的原型对象 )

 

Object 是函数
函数也是对象,对象(除了null)都有 __proto__ 属性,指向其原型函数,通过 __proto__ 属性形成原型链。
构造函数的 constructor 都指向 Function
Function 的 prototype 指向一个特殊匿名函数,且这个特殊匿名函数的 __proto__ 指向 Object.prototype

 

参考链接

 

posted @ 2018-11-14 19:58  justSmile2  阅读(196)  评论(0编辑  收藏  举报