Tôi có một đối tượng JavaScript mà không một cái gì đó như thế này - sử dụng một đóng cửa để mô phỏng tin vs chức năng công cộng/biến:nguyên mẫu JS vs đóng cửa
var myCoolObject = function(x, y) {
var prop1 = "a cool prop1 value";
var negX = x * -1;
var negY = y * -1;
var xyProduct = x * y;
return {
PublicProp1: prop1,
getXYProduct: function() { return xyProduct; },
getNegX: function() { return negX; },
getNegY: function() { return negY; }
}
}
tôi sẽ tạo ra khoảng 4000 trường hợp của đối tượng này, và từ những gì tôi đang đọc thêm chức năng thông qua prototype
sẽ hiệu quả hơn so với cách thêm chúng như tôi có ở trên (vì trong ví dụ của tôi, mỗi trường hợp sẽ có riêng của nó getXYProcust()
, getNegX()
và getNegY()
chức năng
câu hỏi của tôi là gấp đôi -. là của tôi cách tiếp cận trên thực sự "không hiệu quả"? Tôi nhận ra rằng không hiệu quả là một thuật ngữ tương đối - nhưng đó là điều mà tôi có thể sẽ nhận thấy. Nếu nó không hiệu quả, làm thế nào tôi có thể thêm các chức năng đó vào prototype
của myCoolObject
? Tôi thử như sau:
myCoolObject.prototype.protoProp = "pppp";
myCoolObject.prototype.getAtMeBro = function() { return "get at me bro"; };
var myInstance = new myCoolObject(5, 10);
Nhưng không phải protoProp
cũng không 'getAtMeBro()' là tài sản của myInstance
khi tôi kiểm tra nó.
Cảm ơn trước vì đã được trợ giúp - tôi đánh giá cao!
Trình xây dựng trông như thế nào? Hãy chắc chắn rằng bạn không trả lại bất cứ điều gì (hoặc chỉ 'này'). –
Tôi không chắc mình có hiểu câu hỏi này không? constructor sẽ trông giống như myCoolObject mới (5, 10) khi tôi khởi tạo nó. – MattW
Không, hàm tạo là hàm được sử dụng với từ khóa 'mới' như' hàm myCoolObject() {} ' –