所以JavaScript是一种函数式语言,类是由函数定义的,函数作用域对应于类的构造函数。经过相当长的时间研究如何在 JavaScript 中进行 OOP,我现在明白了。
我想做的事情不一定可行,所以我首先想知道这是否是个好主意。假设我有一个数组和一个如下所示的类:
var Entry = function(name, numbers, address) {
this.name = name;
if(typeof numbers == "string") {
this.numbers = [];
this.numbers.push(numbers);
}
else this.numbers = numbers;
this.address = address;
};
var AddressBook = [];
然后我使用以下功能添加联系人:
function addContact(name, numbers, address) {
AddressBook.push(new Entry(name, numbers, address));
}
我不能让new Entry()
将自身 放入AddressBook
中吗?如果我不能在创建时执行此操作,那么也可以使用 Entry
原型(prototype)中的方法来执行此操作会很有趣。我想不出一种方法来做类似的事情。
最佳答案
您可以尝试将 AddressBook
数组引用传递给函数,如下所示:
var Entry = function(name, numbers, address, addressBook) {
this.name = name;
if(!(numbers instanceof Array)) {
this.numbers = [numbers];
}
else this.numbers = numbers;
this.address = address;
addressBook.push(this);
};
var addressBook = [];
function addContact(name, numbers, address) {
new Entry(name, numbers, address, addressBook)
}
关于javascript - 自推对象构造器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20169612/