proto 和 constructor.prototype 之间的区别
使用 JavaScript 对象时,了解 proto 和 constructor.prototype 至关重要。 proto 指向对象的直接原型,而 constructor.prototype 指的是创建该对象的函数所创建的对象。这种区别在遍历原型链时会导致不同的结果。
原型链遍历
如提供的代码所示,可以使用 proto遍历对象的原型链。示例中使用proto来遍历Gadget函数实例newtoy的原型链。每个后续的 proto 调用都会在链中上升一级,最终返回 null,因为除了 Object.prototype 之外没有原型。
但是,如果 constructor.prototype.constructor.prototype.constructor.prototype使用时,它也会提升原型链,但最终返回初始 Gadget 函数,因为它引用创建 Gadget 构造函数的原型。
Internet Explorer 中的 Null 检查
在 Internet Explorer 中,proto 属性不可用,可以使用 Function 对象上的原型 getter 来遍历原型链。下面的代码演示了如何检查 null:
function checkNull(obj) { while (obj = obj.prototype) { // Check if the prototype is null } }
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3