JavaScript hasOwnProperty返回false问题:仅修改Payment函数输出true(Hackerrank题)
问题原因
原有实现中setAmount是绑定在每个Payment实例自身的属性,没有挂载到构造函数的原型对象Payment.prototype上,因此Payment.prototype.hasOwnProperty('setAmount')会返回false。
正确实现
只需将setAmount方法挂载到Payment.prototype上即可,修改后代码如下:
function Payment(amount) { this.amount = amount; } Payment.prototype.setAmount = function(updatedAmount) { return this.amount = updatedAmount; }
注意这里不能用箭头函数定义原型方法:箭头函数没有独立的this指向,会绑定外层作用域的this,无法正确指向实例对象,因此要使用普通函数声明,功能和原有实现完全一致。
修改后运行不可编辑的测试代码,console.log会输出预期的true。
内容的提问来源于stack exchange,提问作者user14422045
相关产品推荐
相关产品推荐

