使用Iterators + For..Of实现instanceof

function fiboCoffee(L,R){
  var O = R.prototype;
  let fibo = { [Symbol.iterator](){
      return{
        next(){
          L = L.__proto__;
          return {done:false,value:L};
        }  
      }
  }
}
  for(n of fibo){
    if(n === O){
      return true;
    }
    else if(n === null){
      return false;
    }
  }
};

for...of的初始值是执行第一遍next的返回值,所以在初始化L时,要注意应该在next函数里初始化,否则判断就会出现错误。

使用

function A(){};
function b(){};
var a = new A();
var b = new B();
fiboCoffee(b,A); // false;
fiboCoffee(a,A); // true;
b.__proto__ = A.prototype;
fiboCoffee(b,A); // true;
a instanceof A; // true
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。