Javascript:构造对象

时间:2012-03-30 21:53:29

标签: javascript

我是一个javascript noob,但我有一个一直困扰我的一般性问题。让我们举一个例子:

如果我在Chrome上跳转到JS控制台,我可以轻松浏览window对象。 window似乎列出了很多“类型”,可以这么说。例如,window.CSSPrimitiveValue就是这样一个属性。当我在控制台中评估window.CSSPrimitiveValue时,我会回到看起来像构造函数的东西(可能):

function CSSPrimitiveValue() { [native code] }

所以看起来这个函数是用某种母语实现的。不管。当然,我想构建其中一个,如:

var test = new CSSPrimitiveValue();

但后来我收到了一个错误:

TypeError: Illegal constructor

我怀疑我要么错误地调用构造函数,要么根本不是构造函数。我是一个相当大的JS noob关于这个,但有没有办法让我手动构建这些对象之一?怎么办呢?

1 个答案:

答案 0 :(得分:21)

使用new关键字调用时,用JavaScript编写的任何函数都可以是构造函数。正如您已经注意到,您正在处理的函数是 native ,即用C或C ++编写(可能是C ++,因为Chrome的JavaScript引擎也是用C ++编写的)。本机函数/对象可以具有特定的行为,例如您不能将其用作构造函数的情况 - 您无能为力。

“函数”甚至没有.call()方法,你也不能在之前创建的对象上调用它(并不是因为它没有正确[[]原型]]设置)