定义 JavaScript 原型:探索两种语法及其影响
在 JavaScript 中,定义原型提供了一种向对象添加行为的便捷方法。原型定义有两种常见语法,它们可能存在功能差异。
选项 1:扩展现有原型
Person.prototype.sayName = function(name) { alert(name); }
此语法扩展现有原型对象具有新属性 (sayName) 和分配给它的函数。在此定义之前实例化的对象可以继承新方法。
选项二:覆盖原型
Person.prototype = { sayName: function(name) { alert(name); } }
这里,整个原型对象被替换为新的原型对象,仅包含 sayName 方法。这将覆盖所有现有的原型属性,包括隐式绑定的构造函数属性。
功能差异
优点和缺点
扩展的替代语法:
更清晰的对象字面量语法在不覆盖的情况下,考虑使用 Object.assign:
Object.assign(Person.prototype, { sayName: function(name) { alert(name); } });
以上是扩展和覆盖 JavaScript 原型有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!