我使用 JavaScript (ECMAScript 5)。我有这样一个类:
我的类(class)
function elementClass(htmlType, cssClass, text, value, id) {
this.htmlType = htmlType;
this.cssClass = cssClass;
this.text = text;
this.value = value;
this.id = id;
}
有时我需要设置一些属性,我想使用如下代码:
var newElement = new elementClass(htmlType ="div",cssClass = "form-group",id = "div1");
我需要将 div1
作为 id
传递,但它作为第三个参数传递。
我可以使用下面的代码来做到这一点:
var newElement3 = new elementClass();
newElement3.htmlType = "div";
newElement3.cssClass = "form-group";
newElement3.id = "div1";
但我想尽量减少代码编号,例如:
var newElement = new elementClass(htmlType ="div",cssClass = "form-group",id = "div1");
我阅读了很多主题,但找不到任何解决方案。
有什么办法吗?
提前致谢。
最佳答案
传递一个对象作为参数:
function ElementClass ( settings ){
for(var key in settings){
this[key] = settings[key];
}
}
所以你可以这样做:
var instance = new ElementClass({
some:"other"
});
如果你想要默认参数/防止扩展你可以这样做:
function ElementClass( options ){
var defaults = {
some:"value"
stays:"the same"
};
for(var key in defaults){
this[key] = options[key] || defaults[key];
}
}
所以如果你实例化它:
new ElementClass({
some:"stuff", //overridden
whatever:"unknown" //omitted
});
它会导致
{ some:"stuff", stays:"the same"}
关于构造函数中的 JavaScript 自定义参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46863517/