美文网首页
instanceof

instanceof

作者: 巭炬炬 | 来源:发表于2019-02-11 16:34 被阅读0次

    instanceof 复杂用法
    console.log(Object instanceof Object);//true
    console.log(Function instanceof Function);//true
    console.log(Number instanceof Number);//false
    console.log(String instanceof String);//false
    console.log(Function instanceof Object);//true
    console.log(Foo instanceof Function);//true
    console.log(Foo instanceof Foo);//false

    • JavaScript instanceof 运算符代码
    function instance_of(L, R) {//L 表示左表达式,R 表示右表达式
    var O = R.prototype;// 取 R 的显示原型
    L = L.__proto__;// 取 L 的隐式原型
    while (true) {
    if (L === null)
         return false;
       if (O === L)// 这里重点:当 O 严格等于 L 时,返回 true
         return true;
       L = L.__proto__;
     }
    }
    

    显示原型 : prototype 只要创建一个新的函数,就会为该函数创建一个prototype属性.该属性指向函数的原型对象.所有原型对象都会自动获得一个constructor构造函数属性,该属性指向prototype属性所在函数的指针.
    隐式原型 : __prototype__ 隐式原型指向创建这个对象的函数的prototype.

    function P(){}
    let p1 = new P();
    p1.__proto__ === P.prototype //true
    P.prototype  //  {constructor: ƒ}
    P.prototype.constructor === P //true
    P.__proto__ === Function.prototype //true
    

    注意
    通过Function.prototype.bind方法构造出来的函数没有prototype属性。
    Object.prototype.这个对象的是个例外,它的__proto__值为null。

    相关文章

      网友评论

          本文标题:instanceof

          本文链接:https://www.haomeiwen.com/subject/zryqeqtx.html