我有一个用例如下
var myObject1 = new myObject();
和myObject应该有一个数组,它将存储由myObject
创建的所有对象示例: -
如果创建一个对象,如
var xyz = new myObject();
myObject.all[0] == xyz
有什么方法 - 当我创建一个对象&我可以把它推入一个在同一个对象的定义中的数组。
答案 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)