我可以知道所调用的原始对象/函数的结构和结构的名称是什么吗?

时间:2013-10-30 17:20:16

标签: javascript

我在Javascript中看过下面的代码行,但我不知道这种方式在制作对象和函数时的名称?

请您提示如何编写下面一行调用的对象/函数?

var generalSettings = new (invoke("settings"))({"a":1}).push(5);

我无法搜索到这一点,我在Javascript中读到了OOP但从未见过这个。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这里,invoke("settings")返回构造函数。反过来,该构造函数接收一个参数:对象{"a":1}。最后,由该构造函数生成的结果对象调用了push方法。

// this accepts an object with an `a` key, like {"a":1}
// it constructs an object with an `aVal` property and `push` method
function SettingsObj(options) {
    this.aVal = options.a;
    this.push = function() { /* ... */ };
}

// this object serves as a dictionary of constructors
var constructors = {
    "settings": SettingsObj
}

// this function returns a constructor from the constructors dictionary
function invoke(constructorName) {
    return constructors[constructorName];
}
  • invoke("settings") - 返回构造函数
  • new (invoke("settings"))() - 运行没有参数的构造函数
  • new (invoke("settings"))({"a":1}) - 运行构造函数一个{"a":1}参数
  • new (invoke("settings"))({"a":1}).push(5) - 在构造函数构建的对象上调用push方法