【问题标题】:Javascript: Constructing ObjectsJavascript:构造对象
【发布时间】:2012-03-30 21:53:28
【问题描述】:

我有点 javascript 菜鸟,但我有一个普遍的问题一直困扰着我。举个例子:

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

function CSSPrimitiveValue() { [native code] }

所以看起来该功能是用某种本地语言实现的。不管。自然地,我想构建这些东西之一,就像这样:

var test = new CSSPrimitiveValue();

然后我得到一个错误:

TypeError: Illegal constructor

我怀疑要么我错误地调用了构造函数,要么它根本就不是构造函数。我是一个相当大的 JS 菜鸟,但是有什么方法可以让我手动构造其中一个对象吗?解决这个问题的方法是什么?

【问题讨论】:

  • 在某些情况下,我能够创建自己的对象,该对象具有与我未被允许创建的对象相同的属性和方法并且它有效。

标签: javascript


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 2013-03-30
    • 2011-04-21
    • 1970-01-01
    • 2019-01-17
    • 2018-06-12
    • 1970-01-01
    相关资源
    最近更新 更多