数组插入JavaScript

时间:2017-03-08 01:56:54

标签: javascript

我有一个用例如下

var myObject1 = new myObject();

和myObject应该有一个数组,它将存储由myObject

创建的所有对象

示例: -

如果创建一个对象,如

var xyz = new myObject();
myObject.all[0] == xyz

有什么方法 - 当我创建一个对象&我可以把它推入一个在同一个对象的定义中的数组。

2 个答案:

答案 0 :(得分:4)

您可以直接在构造函数上创建属性,以获取问题中提到的myObject.all[0] == xyz行为。从构造函数中将每个对象添加到数组中:

function MyObject() {
  MyObject.all.push(this);
  // any other initialisation tasks here
}
MyObject.all = [];
    
var obj1 = new MyObject();
var obj2 = new MyObject();
    
// to access the array use MyObject.all:
console.log(MyObject.all[1] === obj2);  // true

或者,您可以向对象原型添加数组,但仍然可以在构造函数中向该数组添加新对象:

function MyObject() {
  this.all.push(this);
  // any other initialisation tasks here
}
MyObject.prototype.all = [];

var obj1 = new MyObject();
var obj2 = new MyObject();

// to access the array:
console.log(obj1.all);
// or
console.log(MyObject.prototype.all);

console.log(obj1.all[1] === obj2); // true

(注意:在两个示例中,我都用{M}拼写MyObject,因为它是一个JS约定,用于作为构造函数的大写函数。这不是强制性的。)

答案 1 :(得分:0)

也许是这样的?

function MyObject(name){
   if (!O.prototype.instances) O.prototype.instances = [];
   O.prototype.instances.push(name);
}


var a = MyObject('a');
var b = MyObject('b');

console.log(MyObject.prototype.instances)