为什么通过原型链修改属性没生效?
我试着通过原型给实例对象添加一个方法,但调用的时候报错了,说不是函数。明明在构造函数的 prototype 上定义了啊,是不是哪里搞错了?
这是我的代码:
<script>
function Person(name) {
this.name = name;
}
Person.prototype.sayHi = function() {
console.log('Hi, ' + this.name);
};
const p = new Person('小明');
p.sayHi(); // 报错:p.sayHi is not a function
</script>
p.sayHi()是在Person.prototype.sayHi定义之后才调用。如果你在控制台分段执行,先
new Person('小明')再定义sayHi,那就会报错,因为实例已经创建了,原型链那时候还没这个方法。检查一下你的代码是不是分块写的,把定义放在调用前面试试。