You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
functioninstanceofMock(L,R){// L 必须是实例对象// R 必须是构造函数if(L===null||typeofR!=='function'){returnfalse;}while(true){// 已经遍历到最顶端if(L===null){returnfalse;}if(R.prototype===L.__proto__){returntrue;}// 一直顺着 __proto__ 找L=L.__proto__;}}
Uh oh!
There was an error while loading. Please reload this page.
instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。
A构造函数 -> 实例化 -> 实例a
实例a ->
__proto__
-> A.prototype ->__proto__
-> Object.prototype ->__proto__
-> nullFunction构造函数 -> 原型 -> Function.prototype ->
__proto__
-> Object.prototype ->__proto__
-> nullA构造函数 ->
__proto__
-> Function.prototype ->__proto__
-> Object.prototype ->__proto__
-> nullObject构造函数 -> 原型 -> Object.prototype ->
__proto__
-> nullObject构造函数 ->
__proto
-> Function.prototype ->__proto__
-> Object.prototype->
proto` -> nullFunction构造函数 -> 实例化 -> A构造函数 -> 实例化 -> 实例a
Function构造函数 -> 实例化 -> Object构造函数 ->
__proto__
-> Function.prototype ->__proto__
-> Object.prototype ->__proto__
-> null语法
object instanceof constructor
: object 某个实例对象 constructor 某个构造函数instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上
要检测对象不是某个构造函数的实例时,你可以这样做
第一次判断是说,如果传递进来是 null 或者是 第二个参数压根就不是一个function,这种情况,永远都是false了。
while 里面的 ,因为我对L进行了迭代取值,不停的取 protocol,所以这时候 L最终可能会达到 null。
The text was updated successfully, but these errors were encountered: