Tôi đã đọc lên trên shim Crockford để ngăn chặn việc ghi đè các nguyên mẫu, và hiểu rằng nó không phải là giải pháp cuối cùng tất cả/tất cả mọi lúc. Tôi cũng hiểu rằng ES5 Shim có thể là một giải pháp thay thế khả thi cho điều này. Tôi cũng đọc this post which provides a more robust, secure alternative.Hiểu về Crockford's Object.create shim
Tuy nhiên, tôi muốn biết shim Object.create
của anh ấy là "nói" và sau đó "đang thực hiện". Ai đó có thể vui lòng cho tôi biết nếu nhận xét giải thích của tôi đúng không?
if (typeof Object.create === 'undefined') {
//If the browser doesn't support Object.create
Object.create = function (o) {
//Object.create equals an anonymous function that accepts one parameter, 'o'.
function F() {};
//Create a new function called 'F' which is just an empty object.
F.prototype = o;
//the prototype of the 'F' function should point to the
//parameter of the anonymous function.
return new F();
//create a new constructor function based off of the 'F' function.
};
}
//Then, based off of the 'Lost' example in the Crockford book...
var another_stooge = Object.create(stooge);
//'another_stooge' prototypes off of 'stooge' using new school Object.create.
//But if the browser doesn't support Object.create,
//'another_stooge' prototypes off of 'stooge' using the old school method.
Bằng cách này, nguyên mẫu của đối tượng 'stooge' không thể ghi đè khi chúng tôi bổ sung nội dung vào 'another_stooge'. Không cần phải thiết lập lại nguyên mẫu 'stooge' bằng cách sử dụng 'hàm tạo'.
Cảm ơn trước,
-k
A-ha! Tôi nghĩ rằng tôi đã nhận nó. Cảm ơn Sheikh ... giúp đỡ của bạn được đánh giá cao !!! – kaidez
Bạn đang chào đón nhiều nhất :-) –