创建一个新数组,并将其推入一行中-Javascript OOP
我用一个函数编写了这段代码,其中a我试图定义一个创建一个新数组,并将其推入一行中-Javascript OOP,javascript,jquery,arrays,Javascript,Jquery,Arrays,我用一个函数编写了这段代码,其中a我试图定义一个数组,然后在下一行推到它: function Spot(value) { this.x = null; this.y = null; this.values = []; this.values.push(value); } 我试过这个: this.values = [].push(value); 及 但失败了。代码是否有问题…只需在数组中获取值即可 功能点(值){ 这个.x=null; 这个.y=null; this.valu
数组
,然后在下一行推到它:
function Spot(value) {
this.x = null;
this.y = null;
this.values = [];
this.values.push(value);
}
我试过这个:
this.values = [].push(value);
及
但失败了。代码是否有问题…只需在数组中获取值即可
功能点(值){
这个.x=null;
这个.y=null;
this.values=[value];
}
变量点=新点('foo')
控制台日志(点)
创建数组并将值压入数组的方式是正确的。但由于它是在函数内部创建的,因此您需要以某种方式访问函数外部的对象
由于没有返回任何内容,因此可以将其作为构造函数调用
var spot = new Spot()
function Spot(value) {
this.x = null;
this.y = null;
this.values = [];
this.values.push(value);
}
var spot = new Spot();
如果您不想将其作为构造函数调用,那么只需返回此
对象即可
function Spot(value) {
this.x = null;
this.y = null;
this.values = [];
this.values.push(value);
return this;
}
您缺少数组初始化语法:
var x = [ 1, 2, 3 ];
在您的情况下,这将是:
this.values = [ value ];
var x = ([]).concat("y");
更多信息请点击此处:
守则:
var x = ([]).push("y");
看起来它应该生成一个数组并将值推送到它。它确实创建了数组,但是数组不会返回到x
,而是返回数组的新长度,即1
push()方法将一个或多个元素添加到数组的末尾,并返回数组的新长度。[我的重点]
如评论中所述,更接近您最初尝试的替代方案是:
this.values = [ value ];
var x = ([]).concat("y");
concat()方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组
什么失败了?你得到了什么错误?this.values=[value]
我没有在控制台屏幕上生成数组该死,我怎么能稍微打开我的大脑——谢谢@freedomn ms一旦你没有返回任何东西,你需要将它作为构造函数调用var spot=new spot()代码>虽然是有用的辅助信息,但您可能希望添加一条注释,这是附加信息,因为它没有回答如何将数组init和填充从2行更改为一行的问题。@freedomn-m,谢谢您的建议。我已经更新了我的答案。我的错是我自己没有弄明白。。。。但仍然是为什么(this.values | |[]).push(value)
未创建数组….?请使用concat()
而不是push()
:this.values=(this.values | |[])。concat(value)代码>。