Kum*_*hak 5 javascript constructor
我在 JavaScript 中有一个构造函数,如下所示,并希望从数组中提供构造函数参数:
function dataRow(value1, value2, value3, value4, value5) {
this.val1 = value1;
this.val2 = value2;
this.val3= value3;
this.val4 = value4;
this.val5 = value5;
}
Run Code Online (Sandbox Code Playgroud)
现在我想要从数组提供的构造函数参数:
var dataArray = new Array();
dataArray("Value1","Value2","Value3","Value4","Value5","Value6"...........)
Run Code Online (Sandbox Code Playgroud)
我希望 (value1, value2, value3, value4, value5) 这部分从我的dataArray.
在现代环境中,您可以使用扩展符号:
var row = new dataRow(...dataArray);
Run Code Online (Sandbox Code Playgroud)
var row = new dataRow(...dataArray);
Run Code Online (Sandbox Code Playgroud)
在较旧的环境中,这样做真的很痛苦。在您的具体情况下,可能只是以艰难的方式去做:
dataRow(dataArray[0], dataArray[1], dataArray[2], dataArray[3], dataArray[4]);
Run Code Online (Sandbox Code Playgroud)
或者您可以将创建与调用分开,并使用以下命令调用它Function#apply:
var row = Object.create(dataRow.prototype);
dataRow.apply(row, dataArray);
Run Code Online (Sandbox Code Playgroud)
function dataRow(v1, v2, v3, v4, v5) {
this.v1 = v1;
this.v2 = v2;
this.v3 = v3;
this.v4 = v4;
this.v5 = v5;
}
var dataArray = [1, 2, 3, 4, 5];
var row = new dataRow(...dataArray);
console.log(row.v1);
console.log(row.v2);
console.log(row.v3);
console.log(row.v4);
console.log(row.v5);Run Code Online (Sandbox Code Playgroud)
这不适用于通过创建的构造函数class,但如果您通过创建它class,请使用扩展符号;它们是同时引入的(ES2015)。
不过,我建议不要这样做,尤其是考虑到您在下面的评论:
...如何动态创建 this.val1 = value1; this.val2 = value2; this.val3= value3;...
相反,使用单个数组属性,并传入一个您保留或复制的数组:
dataRow(dataArray[0], dataArray[1], dataArray[2], dataArray[3], dataArray[4]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
727 次 |
| 最近记录: |