是的,您可以手动覆盖.constructor
构造函数prototype
对象的属性。
好像constructor
属性变了。通常你可能会看到类似的东西,function Array() { [native code] }
而不是[ undefined ]
.
您可以做的一件事是验证...
console.log(typeof [].constructor);
它应该给你"function"
。如果它给了你"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
构造函数的事实。