是否可以在不使用class关键字的情况下扩展buildins? 据我了解,class关键字不仅仅是语法糖。但这会起作用吗?
MyArray = function () {}
MyArray.prototype = Object.create(Array.prototype)
答案 0 :(得分:4)
当然。您注意到,在JavaScript中继承是class
关键字存在之前的事情。您的示例非常接近如何执行此操作。实际上,the documentation for Object.create
给出了一个示例,该示例说明了如何无需使用class
就可以实现继承。
要将他们的示例应用于您的示例,您可以这样做:
const MyArray = function() {
Array.call(this); // Call parent constructor
}
MyArray.prototype = Object.create(Array.prototype);
MyArray.prototype.constructor = MyArray; // Set constructor
// Add methods:
MyArray.prototype.test = function() {
this.forEach(element => console.log("Element:", element));
}
// Now you can create new MyArray's that inherit from Array:
const myArray = new MyArray();
myArray.push("hello");
myArray.push("world");
myArray.test();