Tôi cố gắng mở rộng đối tượng mảng trong javascript bằng một số phương thức thân thiện với người dùng như Array.Add() thay vì Array.push(), v.v ...Cách mở rộng đối tượng mảng trong javascript
tôi thực hiện 3 cách để thực hiện việc này . không may là cách thứ 3 không hoạt động và tôi muốn hỏi tại sao? và cách thực hiện.
//------------- 1st way
Array.prototype.Add=function(element){
this.push(element);
};
var list1 = new Array();
list1.Add("Hello world");
alert(list1[0]);
//------------- 2nd way
function Array2() {
//some other properties and methods
};
Array2.prototype = new Array;
Array2.prototype.Add = function(element){
this.push(element);
};
var list2 = new Array2;
list2.Add(123);
alert(list2[0]);
//------------- 3rd way
function Array3() {
this.prototype = new Array;
this.Add = function(element){
this.push(element);
};
};
var list3 = new Array3;
list3.Add(456); //push is not a function
alert(list3[0]); // undefined
theo cách thứ ba tôi muốn mở rộng đối tượng Array bên trong lớp Array3. Làm thế nào để làm điều này để không có được "đẩy không phải là một chức năng" và "không xác định"?
Ở đây tôi thêm một cách thứ tư.
//------------- 4th way
function Array4() {
//some other properties and methods
this.Add = function(element){
this.push(element);
};
};
Array4.prototype = new Array();
var list4 = new Array4();
list4.Add(789);
alert(list4[0]);
Ở đây một lần nữa tôi phải sử dụng mẫu thử nghiệm. Tôi hy vọng tránh sử dụng các đường thừa bên ngoài hàm tạo lớp như Array4.prototype. Tôi muốn có một lớp học được định nghĩa nhỏ gọn với tất cả các phần ở một nơi. Nhưng tôi nghĩ rằng tôi không thể làm điều đó nếu không.
Nếu bạn thêm phương thức vào Mảng, bạn sẽ ngắt foreach() trên các mảng – SpacedMonkey
Bạn đã xem tập lệnh cà phê chưa? Tôi sẽ cập nhật câu trả lời của mình với ví dụ – SMathew
tôi sẽ không thêm phương thức vào Array.prototype như trong ví dụ thứ nhất. Đây là một thử nghiệm. Tôi sẽ tạo một lớp sẽ mở rộng đối tượng Array. Ví dụ jsArray. Các đối tượng jsArray sẽ là các mảng nhưng với nhiều tính năng hơn. – demosthenes