getter 返回函数时 Firefox 中的意外行为
Object.defineProperty(Number.prototype, 'foo', {
get: function () {
var me = this
return function () { return me.valueOf() }
}
})
console.log(5..foo())
这在 Chrome 中记录 5,但在 Firefox 中记录 0。
Object.defineProperty(Number.prototype, 'bar', {
get: function () {
return this.valueOf()
}
})
console.log(5..bar)
这会按预期在两个浏览器中记录 5。
谁能解释一下这种行为,或者建议如何重写第一个示例以使其在 Firefox 中工作,就像在 Chrome 中一样?
Object.defineProperty(Number.prototype, 'foo', {
get: function () {
var me = this
return function () { return me.valueOf() }
}
})
console.log(5..foo())
This logs 5 in Chrome, but 0 in Firefox.
Object.defineProperty(Number.prototype, 'bar', {
get: function () {
return this.valueOf()
}
})
console.log(5..bar)
This logs 5 in both browsers as expected.
Can anyone explain this behaviour, and perhaps suggest how the first example could be rewritten to work in Firefox as it does in Chrome?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当使用“new Number(value)”但不直接使用“number”时,它对我有用:
尝试:
It works for me on FF when using "new Number(value)" but not using directly a "number":
Try: