对象的等效实例.创建和原型链
Instanceof equivalent for Object.create and prototype chains
考虑这样一个带有原型链的对象:
var A = {};
var B = Object.create(A);
var C = Object.create(B);
如果C在其原型链中有A,如何检查运行时?
instanceof
不适合,因为它被设计为与构造函数一起工作,我在这里没有使用。
我的回答很简短…
你可以使用isPrototypeOf
方法,它将出现在你的对象继承自object原型的情况下,就像你的例子。
的例子:
A.isPrototypeOf(C) // true
B.isPrototypeOf(C) // true
Array.prototype.isPrototypeOf(C) // false
更多信息可以在这里阅读:Mozilla开发者网络:isPrototypeOf
您可以通过递归调用Object.getPrototypeOf
来遍历原型链:http://jsfiddle.net/Xdze8/.
function isInPrototypeChain(topMost, itemToSearchFor) {
var p = topMost;
do {
if(p === itemToSearchFor) {
return true;
}
p = Object.getPrototypeOf(p); // prototype of current
} while(p); // while not null (after last chain)
return false; // only get here if the `if` clause was never passed, so not found in chain
}
相关文章:
- 创建对象函数原型和代码是错误的
- 创建后指定对象原型
- 什么是“;原型;通过JavaScript中的Object Literal Notation创建的对象的链接
- ES6 const,用于在JavaScript中创建对象原型;这是一种模式吗
- 哪个原型用于创建具有未知标记的节点
- 使用闭包创建原型中引用的私有属性
- 使用sinon.js创建一个“;“间谍对象”;使用基于真实构造函数/原型的间谍方法
- 动态创建原型并推送到数组
- 不创建父对象的原型继承
- 创建所有原型函数均可访问的局部变量
- 挂钩文档.使用函数原型创建元素
- 在Vanilla Javascript中使用窗体中的对象原型创建多个用户
- 如何在 JavaScript 中从原型创建对象
- 如何使用原型创建基元包装器对象
- 如何在javascript中调用通过原型创建的方法
- JavaScript:基于原型创建继承函数
- 你能在JavaScript中使用自定义原型创建函数吗?
- 如果我使用原型创建OOP JS代码,我如何从循环中引用类方法
- 用原型创建嵌套属性是一个好的实践吗?以及如何正确地做到这一点
- 使用原型创建带有方法的数组