P K*_*P K 6 javascript firefox dom google-chrome
经过这么多时间的实验,我发现__proto__或者Object.getPrototypeOf()方法是在DOM对象中遍历原型链的正确方法.
使用一系列constructor.prototype实际上并不遍历两个浏览器中的原型链.(虽然这是ECMA标准中定义的方式,但构造函数的prototype属性是您的原型对象).
欢迎任何建议或评论......
p1 = document.getElementById("test"); // div element
//Prototype Object of p1
p2 = element.constructor.prototype;
//Prototype object of p2
p3 = element.constructor.prototype.constructor.prototype;
console.log(p2 === p3); // true in chrome(howcome they same ?), false in firefox
q2 = element.__proto__;
q3 = element.__proto__.__proto__;
console.log(q2 === q3); // false in both browser
Run Code Online (Sandbox Code Playgroud)
我认为您误解了构造函数/原型的工作原理。
给定一个构造函数,它的 .prototype 将是用它构造的事物的原型。原型的 .constructor 指向构造函数。
所以特别Element.prototype.constructor === Element应该持有。由于错误,它不一定在浏览器中。这就是为什么你在 Chrome 中看到 p2 == p3 的原因。
| 归档时间: |
|
| 查看次数: |
883 次 |
| 最近记录: |