Tôi nghĩ đây sẽ là dễ dàng như:Cách xác định xem đối tượng JavaScript gốc có thuộc tính/phương thức không?
if(typeof(Array.push) == 'undefined'){
//not defined, prototype a version of the push method
// Firefox never gets here, but IE/Safari/Chrome/etc. do, even though
// the Array object has a push method!
}
Và nó hoạt động tốt trong Firefox, nhưng không phải trong IE, Chrome, Safari, Opera, họ trả lại tất cả các thuộc tính/phương pháp của mẹ đẻ Đối tượng mảng là 'không xác định' bằng cách sử dụng phép thử này.
Phương thức .hasOwnProperty (prop) chỉ hoạt động trên các phiên bản ... do đó nó không hoạt động, nhưng do dùng thử và lỗi, tôi nhận thấy rằng nó hoạt động.
//this works in Firefox/IE(6,7,8)/Chrome/Safari/Opera
if(typeof(Array().push) == 'undefined'){
//not defined, prototype a version of the push method
}
Có gì không ổn với việc sử dụng cú pháp này để xác định xem một tài sản/phương pháp tồn tại trên một Native Object/~ "Class JavaScript" ~, hoặc là có một cách tốt hơn để làm điều này?
Thú vị ... Tôi đọc rằng .prototype chỉ để thêm thuộc tính/phương pháp mới vào đối tượng, tôi không nghĩ sử dụng typeof trên đó. ví dụ. mẫu thử nghiệm http://www.devguru.com/technologies/JavaScript/10764.asp typeof http://www.devguru.com/technologies/JavaScript/11529.asp – scunliffe
Nó cho rằng, có, nhưng không CHỈ cho rằng . Tôi khuyên bạn nên xem bài thuyết trình của Douglas Crockford về "Nâng cao Javascript" trong Nhà hát YUI (http://developer.yahoo.com/yui/theater/) - có một số công cụ "dưới mui xe" tuyệt vời ở đó, bao gồm cách nguyên mẫu đối tượng hoạt động. –
điều này sẽ không thấy các thuộc tính được xác định trong nguyên mẫu gốc –