instanceOf函数在JavaScript中的实现
Implementation Of instanceOf function in JavaScript
Stackoverflow大家好!我一直在浏览Mozilla开发者网络的JavaScript指南,并在对象模型的详细信息页面上发现了这个功能:
该函数用于检查对象是否是对象构造函数的实例:
function instanceOf(object, constructor) {
while (object != null) {
if (object == constructor.prototype)
return true;
if (typeof object == 'xml') {
return constructor.prototype == XML.prototype;
}
object = object.__proto__;
}
return false;
}
我的问题是,在同一页上,它说chris
是Engineer
类型的对象,那么下面的代码返回true:
chris.__proto__ == Engineer.prototype;
然而,在上面的instanceOf
函数中,它使用以下比较表达式来检查对象是否是构造函数的实例:
object == constructor.prototype
表达式不应该是:
object.__proto__ == constructor.prototype
还是我遗漏了一点?感谢大家的帮助和提前时间!
您在while
循环的底部缺少语句object = object.__proto__;
。。。这将遍历原型链。object
变量包含遍历的每个步骤的链中的当前对象。
我知道我有点迟到了,但下面的片段应该和的isInstanceOf完全一样
Object.prototype.instanceOf = function (type) {
let proto = this.__proto__;
while (proto) {
if (proto.constructor && proto.constructor === type)
return true;
if (proto.__proto__)
proto = proto.__proto__;
else
break;
}
return false;
};
console.log(Number(12).instanceOf(Number)); //true
function C() {}
function D() {}
var o = new C();
// true, because: Object.getPrototypeOf(o) === C.prototype
o instanceof C;
instanceOf将检查左侧对象和右侧对象的原型。
相关文章:
- 绑定函数时在IE7中未实现Javascript错误
- 可以't实现JavaScript翻转计数器
- 如何实现 Javascript 自动完成功能
- 实现JavaScript内部方法的源代码
- 当实现javascript倒计时时,其他html元素将消失
- 在aspx页面中实现javascript时出现问题
- 这是实现javascript字符串长度属性的正确方法吗
- 将递归函数转换为异步 CPS 实现 (javascript)
- 如何在Wordpress中实现javascript
- 在jQuery方法中实现Javascript变量
- 无法实现 JavaScript 代码
- 在 Rails 应用程序中实现 JavaScript 库
- 如何实现 JavaScript 对象继承
- 我将如何实现JavaScript
- 当浏览器开始实现JavaScript时,如何在支持一两个版本较旧的浏览器的同时开始使用它们
- 有没有其他方法可以在纯python中实现javascript的onClick()函数
- 如何在JavaCC中实现JavaScript自动分号插入
- 响应式网页设计 - 如何实现JavaScript部分
- 用Selfish实现Javascript中的简单继承
- 如何实现JavaScript/ECMAScript“;这里没有线路终止器”;JavaCC中的规则