The Distinction Between proto and constructor.prototype
When working with JavaScript objects, understanding the difference between proto and constructor.prototype is crucial. While proto points to the direct prototype of an object, constructor.prototype refers to the object from which the function that created the object was created. This distinction can lead to different results when traversing prototype chains.
Prototype Chain Traversal
As demonstrated in the provided code, proto can be used to traverse the prototype chain of an object. In the example, proto is used to traverse the prototype chain of newtoy, an instance of the Gadget function. Each subsequent proto call ascends one level in the chain, eventually returning null since there is no prototype beyond Object.prototype.
However, if constructor.prototype.constructor.prototype.constructor.prototype is used, it also ascends the prototype chain but eventually returns the initial Gadget function, since it refers to the prototype from which the Gadget constructor was created.
Null Checking in Internet Explorer
In Internet Explorer, where the proto property is not available, the prototype chain can be traversed using the prototype getter on the Function object. The code below demonstrates how to check for null:
function checkNull(obj) { while (obj = obj.prototype) { // Check if the prototype is null } }
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3