【问题标题】:Looking for documentation on JS Object.constructor() (method)寻找关于 JS Object.constructor() 的文档(方法)
【发布时间】:2018-08-21 13:34:07
【问题描述】:

我见过类似下面的代码:

var obj = Object.constructor("args", ...other parameters...)

(见第 11 和 25 行:https://www.khanacademy.org/computer-programming/html-audio-in-pjs/5702257898455040

这似乎是一种从提供的文本构建对象的方法。我尝试的每次搜索都会显示有关对象构造函数的信息,而没有关于内部 Object 对象的构造函数方法的信息。 mozilla 的文档不包含 Object 对象的构造函数(方法)。

谁能告诉我有关使用此功能的信息?

【问题讨论】:

  • 好的,我现在明白了,天哪,放在教材中真是一件坏事。这就像一个涉及触摸炉子的烹饪课。
  • 这很有可能,我会更仔细地研究一下。谢谢!

标签: javascript object constructor


【解决方案1】:

Object 是一个函数,因此它的构造函数是Function 所以Object.constructor 实际上是Function,可以这样调用:

var fn = new Function("a", "b", "return a + b");
console.log(fn(1, 2)); // 3

但这和eval一样糟糕,所以请不要使用它..

【讨论】:

  • 啊哈!有点误导我没见过!这绝对是正在发生的事情。 KhanAcademy 的人员注入代码以防止初学者错误(无限循环等),我希望绕过注入到时间关键代码中。 (像素操作)感谢您发现这一点!
【解决方案2】:

【讨论】:

  • 去过那里(如前所述),这是一种属性,而不是一种方法。它返回对象构造函数。感谢您的尝试!
  • 我认为它既是属性又是(参考a)​​方法! “返回对Object构造函数函数的引用”。很可能,在您的示例中,该函数包含设置对象属性的代码。
  • 是的,它有点模糊,因为下一句指出:“请注意,此属性的值是对函数本身的引用”但是由于它的正常使用没有括号,所以我称之为一个属性。
【解决方案3】:

constructor 属性仅指向用于构造对象的函数 (Function)。

例子:

function Bla() {
    console.log('a');
}

let a = new Bla; // Logs "a"
console.log(a.constructor); // Logs ƒ Bla() { console.log('a') }
a.constructor(); // Logs "a"

【讨论】:

    猜你喜欢
    • 2021-01-01
    • 2011-03-15
    • 2016-07-24
    • 1970-01-01
    • 2010-12-17
    • 2011-10-18
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    相关资源
    最近更新 更多