自推对象构造函数

gch*_*oni 5 javascript oop

所以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 = [];
Run Code Online (Sandbox Code Playgroud)

我添加了以下功能的联系人:

function addContact(name, numbers, address) {
  AddressBook.push(new Entry(name, numbers, address));
}
Run Code Online (Sandbox Code Playgroud)

我不能这样做new Entry()会让自己陷入困境AddressBook吗?如果我不能在创建时执行此操作,那么使用Entry原型中的方法来完成它将会很有趣.我无法想办法做任何类似的事情.

rdo*_*dev 7

您可以尝试将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)
}
Run Code Online (Sandbox Code Playgroud)