Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建一个新数组,并将其推入一行中-Javascript OOP_Javascript_Jquery_Arrays - Fatal编程技术网

创建一个新数组,并将其推入一行中-Javascript OOP

创建一个新数组,并将其推入一行中-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

我用一个函数编写了这段代码,其中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.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)