Vì vậy, JavaScript là một ngôn ngữ hàm, các lớp được định nghĩa từ các hàm và phạm vi hàm tương ứng với hàm tạo lớp. Tôi nhận được tất cả bây giờ, sau một thời gian khá dài nghiên cứu làm thế nào để OOP trong JavaScript.Trình tạo đối tượng tự đẩy
Điều tôi muốn làm là không nhất thiết có thể, vì vậy trước hết tôi muốn biết đây có phải là một ý hay hay không. Vì vậy, chúng ta hãy nói rằng tôi có một mảng và một lớp học như sau:
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 = [];
Và tôi thêm địa chỉ liên lạc với các chức năng sau:
function addContact(name, numbers, address) {
AddressBook.push(new Entry(name, numbers, address));
}
Tôi không thể làm cho nó để new Entry()
sẽ đặt chính nó vào AddressBook
? Nếu tôi không thể làm điều này khi tạo ra, nó sẽ là thú vị để làm điều đó với một phương pháp trong nguyên mẫu Entry
là tốt. Tôi không thể tìm ra cách để làm bất cứ điều gì tương tự.
Giải pháp tuyệt vời; đang nêu rõ 'mục nhập mới' không có mã tiêu chuẩn biến được gán (nghĩa là nó hoạt động dưới chế độ nghiêm ngặt)? – gchiconi
Simple pass-by-reference. Bạn có mảng 'AddressBook' đã được định nghĩa trong một phạm vi bên ngoài, chuyển nó tới Entry mới (tức là' ab' param), sau khi bạn hoàn thành công cụ trong "constructor", bạn thêm chính mình vào mảng được truyền vào (một lần nữa, nó được chuyển qua tham chiếu). – rdodev
Nó sẽ là chế độ nghiêm ngặt tuân thủ nếu bạn đã làm điều này bên trong cơ thể của một hàm/lớp. Như bây giờ AddressBook là một toàn cầu, đó là một no-no. – rdodev