Ví dụ, một sự Array
datatype có một chức năng gọi là pop()
, mà tôi giả sử được thêm vào sử dụng:Tại sao các thuộc tính kiểu dữ liệu gốc không được hiển thị trên các nguyên mẫu tương ứng của chúng?
Array.prototype.pop = function(){ /* ... */ };
Nhưng như xa như tôi biết, cách duy nhất để làm cho nó không đếm được là để làm một cái gì đó như này:
Object.defineProperty(Array.prototype, "pop", { enumerable: false });
Không được tất cả trình duyệt hỗ trợ.
Array.prototype.doSomething= function(){ };
var arr = [];
console.log(arr); // [doSomething: function]
Vậy tại sao doSomething
hiển thị ở đây, trong khi pop()
thì không? Cả hai đều không được thêm vào nguyên mẫu?
Mảng được ghi lại bằng cách sử dụng các mảng chữ: '[elem, elem]'. Làm thế nào bạn mong đợi các thuộc tính tùy chỉnh để phù hợp ở đây? '{0: elem, 1: elem, length: 2, pop: ...}'? –
@ alex23 Trong ví dụ này, các công cụ dành cho nhà phát triển Chrome. Nhưng thường là con đom đóm. Tôi tin nó cũng xuất hiện ở đó. – Johan
@RobW Vâng, nếu bạn nhìn ở đây: http: // jsfiddle.net/6BAJx/1/trong Chrome, bạn sẽ nhận được '[1, 2, 3, doSomething: function]'. Câu hỏi của tôi là tại sao chỉ có các thuộc tính tùy chỉnh của tôi "phù hợp" trong khi bản địa là vô hình. – Johan