Theo như tôi có thể nói, có hai cách chính để tạo các hàm cho một đối tượng trong javascript. Đó là:Tạo các hàm cho một đối tượng trong javascript
Phương pháp A, làm cho nó trong các nhà xây dựng:
function MyObject() {
this.myFunc1 = function() {
...
}
this.myFunc2 = function() {
...
}
...
}
Phương pháp B, thêm nó vào nguyên mẫu:
function MyObject() {
...
}
MyObject.prototype.myFunc1 = function() {
...
}
MyObject.prototype.myFunc2 = function() {
....
}
Rõ ràng nếu bạn đã làm:
MyObject.myFunc3 = function() {
....
}
sau đó myFunc3
sẽ trở thành liên kết với MyObject chính nó, và không phải bất kỳ đối tượng mới được tạo ra với new
từ khóa. Để rõ ràng, chúng ta sẽ gọi nó là phương thức C, mặc dù nó không hoạt động để tạo các đối tượng mới với từ khóa new
.
Vì vậy, tôi muốn biết sự khác biệt giữa hai loại này là gì. Theo như tôi có thể nói họ có cùng một hiệu quả một cách hợp lý, ngay cả khi những gì đang xảy ra trên máy thì khác.
Nếu tôi đoán tôi sẽ nói rằng điểm khác biệt duy nhất là khi bạn định nghĩa chúng trong hàm tạo như trong phương thức A, nó tạo đối tượng hàm hoàn toàn mới cho từng đối tượng được tạo và phương thức B chỉ giữ một bản sao của nó (trong MyObject), mà nó đề cập đến bất cứ lúc nào nó được gọi. nếu đây là trường hợp, tại sao bạn sẽ làm điều đó một cách trên khác. Nếu không, sự khác biệt giữa phương pháp A và phương pháp B.
Bạn cũng có thể tạo các chức năng trong các đối tượng như [this] (http://jsfiddle.net/uwv5a/) –
đọc về mẫu mô-đun: http://www.engfers.com/code/javascript-module-pattern/ – bryanmac
@CoreyFarwell, tôi cho rằng về cơ bản cũng giống như Phương pháp A, phải không? –