js实现prototype扩展js
在 JavaScript 中扩展原型(prototype)
JavaScript 的原型(prototype)机制允许为现有对象类型添加新的方法或属性。通过扩展原型,所有该类型的实例都能共享这些新增的功能。
扩展内置对象的原型
为内置对象(如 Array、String)添加新方法:
Array.prototype.last = function() {
return this[this.length - 1];
};
const arr = [1, 2, 3];
console.log(arr.last()); // 输出: 3
扩展自定义构造函数的原型
为自定义构造函数添加方法:
function Person(name) {
this.name = name;
}
Person.prototype.greet = function() {
return `Hello, my name is ${this.name}`;
};
const person = new Person('Alice');
console.log(person.greet()); // 输出: Hello, my name is Alice
注意事项
扩展内置对象原型可能会引起命名冲突或意外行为,需谨慎使用。建议仅在必要时扩展自定义对象的原型。
替代方案:使用类(ES6)
现代 JavaScript 可以使用 class 语法更清晰地扩展功能:
class Person {
constructor(name) {
this.name = name;
}
greet() {
return `Hello, my name is ${this.name}`;
}
}
const person = new Person('Bob');
console.log(person.greet()); // 输出: Hello, my name is Bob
最佳实践
- 避免修改内置对象的原型,除非绝对必要
- 使用
Object.defineProperty控制属性的可枚举性 - 优先使用现代
class语法替代原型操作







