我在Javascript中看过下面的代码行,但我不知道这种方式在制作对象和函数时的名称?
请您提示如何编写下面一行调用的对象/函数?
var generalSettings = new (invoke("settings"))({"a":1}).push(5);
我无法搜索到这一点,我在Javascript中读到了OOP但从未见过这个。
感谢您的帮助!
答案 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
方法