Hãy nói rằng chúng tôi có mã này (quên về nguyên mẫu cho một thời điểm):Are đóng cửa trong javascript biên dịch lại
function A(){
var foo = 1;
this.method = function(){
return foo;
}
}
var a = new A();
là chức năng bên trong biên dịch lại mỗi khi hàm A được chạy? Hoặc là tốt hơn (và tại sao) để làm điều đó như thế này:
function method = function(){ return this.foo; }
function A(){
this.foo = 1;
this.method = method;
}
var a = new A();
Hoặc là các công cụ javascript đủ thông minh để không tạo chức năng 'phương pháp' mới mỗi lần? Cụ thể là v8 và node.js. của Google
Ngoài ra, mọi khuyến nghị chung về thời điểm sử dụng kỹ thuật nào được hoan nghênh. Trong ví dụ cụ thể của tôi, nó thực sự phù hợp với tôi để sử dụng ví dụ đầu tiên, nhưng tôi biết rằng hàm bên ngoài sẽ được khởi tạo nhiều lần.
Câu hỏi thú vị. Tôi muốn sẵn sàng đặt cược rằng các thông dịch viên JavaScript thông minh hơn thế. –
Thành thật mà nói, nếu bạn lo lắng về hiệu suất, đây không phải là nút cổ chai của bạn. Tôi không lo lắng về điều đó. –
Bạn muốn thực hiện một getter trên một biến riêng mà không được nhân rộng với mọi lời gọi hàm tạo? – Alsciende