Tôi đang tìm cách ghi đè thuộc tính .length của đối tượng trong JavaScript.Cách ghi đè hàm.length để trả về độ dài của mảng, ở chế độ nghiêm ngặt
Tôi hiện đang có một wrapper trên mảng parent.properties.objects
(mẹ được sử dụng để cho mã để có thể đọc nhiều hơn trong bối cảnh)
Đây là cấu trúc cơ bản:
(biến cha mẹ được định nghĩa trong namespace và intialized)
var parent = function() {
this.properties = {
objects: [];
};
};
wrapper
(function() {
"use strict";
objects = function() {
Nếu không có đối số được truyền, giả sử có được
if (arguments.length === 0) {
var _objects = parent.properties.objects;
return _objects;
sửa đổi hoặc các đối tượng bộ lọc
} else if (arguments.length > 0) {
...
}
};
điều này tạo ra một Object.prototype (không [mẫu]) thay đổi và bổ sung thêm độ dài phương pháp ()
objects.prototype.length = function() {
var length = parent.properties.objects.length;
return length;
}
Lỗi
objects.prototype.__proto__.length = function() {
var length = parent.properties.objects.length;
return length;
}
parent.objects = objects;
})();
Bạn có thể cụ thể hơn về loại lỗi bạn đang nhận được không? – guypursey
Tôi đã tấn công nó với các đối tượng.Length() (JavaScript có phân biệt chữ hoa chữ thường). Tôi đang thực hiện việc này để viết một API thoải mái và không có chức năng cho mọi hoạt động có/thiết lập thuộc tính. nhưng một hàm duy nhất cho mọi thuộc tính. Nó sẽ được tốt đẹp để gọi objects.length(), nhưng objects.Length() sẽ làm, trái ngược với các đối tượng(). Length(). Lỗi là một số loại __proto__ không tìm thấy blah blah blah. Sẽ phải chờ ECMA 6. –
Dòng cuối cùng của bạn 'parent.object = object;' phải làm gì? 'parent' là một hàm, và tôi không thấy biến' object' được khai báo ở bất cứ đâu – Bergi