使用对象文字表示法在 JavaScript 中构建构造函数的最佳方法是什么?
var myObject = {
funca : function() {
//...
},
funcb : function() {
//...
}
};
我希望能够打电话
var myVar = new myObject(...);
并将参数传递给 myObject 中的构造函数。
原文由 mrwooster 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用对象文字表示法在 JavaScript 中构建构造函数的最佳方法是什么?
var myObject = {
funca : function() {
//...
},
funcb : function() {
//...
}
};
我希望能够打电话
var myVar = new myObject(...);
并将参数传递给 myObject 中的构造函数。
原文由 mrwooster 发布,翻译遵循 CC BY-SA 4.0 许可协议
使对象成为一个函数,如下所示:
var myObject = function(arg1){
this.funca = function(){
//...
};
this.funcb = function(){
//...
};
this.constructor = function(obj){
alert('constructor! I can now use the arg: ' + obj.name);
};
this.constructor(arg1);
};
// Use the object, passing in an initializer:
var myVar = new myObject({ name: 'Doug'});
原文由 Simeon 发布,翻译遵循 CC BY-SA 2.5 许可协议
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
这 不是“JSON notation”,这是 JavaScript object literal notation 。 JSON 只是 JS 对象字面量表示法的一个子集,但除了看起来相似之外,它们没有任何共同点。 JSON 用作 数据交换 格式,如 XML。
您想做什么是不可能的。
已经创建了一个对象。没有什么可以实例化。
但是,您可以创建构造函数并将方法添加到其原型:
您使用
new MyObject()
实例化的每个对象都将继承原型的属性(实际上,实例只是获得对原型对象的引用)。有关 JavaScript 对象和继承的更多信息:
更新2:
如果你必须实例化许多同类对象,那么使用构造函数+原型。如果您只需要 一个 对象(如单例),则无需使用构造函数(大多数情况下)。您可以直接使用对象文字表示法来创建该对象。