gpt4 book ai didi

javascript - 关于 JavaScript object.constructor 属性的问题

转载 作者:行者123 更新时间:2023-11-30 13:17:01 26 4
gpt4 key购买 nike

  1. 是否有可能 anyObject.constructor 属性为 null 或未定义(特别是当 ConstructorFunc.prototype 未被修改/覆盖时)?
  2. var date = new Date(); console.log(date.constructor);//记录“Date()”。好的。
    var data = new Array(1, 2, 3); console.log(data.constructor);//它记录类似 [undefined] 的内容。它是什么以及为什么不是 Array()。

TIA

最佳答案

  1. 是的,您可以手动覆盖构造函数的 prototype 对象的 .constructor 属性。

  2. constructor 属性似乎已更改。通常,您可能会看到类似 function Array() { [native code] } 的内容,而不是 [ undefined ]

您可以做的一件事是验证...

console.log(typeof [].constructor);

它应该给你 “功能”。如果它给你 "object",那么它已经被改变了。


不要相信控制台输出

从评论看来,您正在 Firebug 中进行测试。

作为一般规则,不要过于信任控制台日志记录。控制台是环境的附加组件,并且必须解释 给它们记录的内容。有时解释会产生误导。

如果你得到奇怪的结果,然后进行其他测试......

console.log(Array);          // [ undefined ] ...huh???
console.log([].constructor); // [ undefined ] ...huh???

typeof [].constructor; // Firebug still gives "function"

[].constructor === Array; // Firebug returns true

因此您可以看到,尽管 Firebug 对函数本身给出了一个奇怪的解释,但它并没有改变它仍然是预期的 Array 构造函数的事实。

关于javascript - 关于 JavaScript object.constructor 属性的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11693950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com