奇怪的“吸气剂”从数字文字访问“Number.prototype”属性时 IE9 中的行为
Object.defineProperty(Number.prototype, 'foo', {
get: function () { return this }
})
console.log(10.5.foo)
console.log(10..foo) // 0 in IE9!
console.log(10.0.foo) // 0 in IE9!
console.log(10.01.foo)
console.log((10).foo) // 0 in IE9!
var x = 10
console.log(x.foo) // 0 in IE9!
任何人都可以解释这种行为和/或建议解决方法吗?
Object.defineProperty(Number.prototype, 'foo', {
get: function () { return this }
})
console.log(10.5.foo)
console.log(10..foo) // 0 in IE9!
console.log(10.0.foo) // 0 in IE9!
console.log(10.01.foo)
console.log((10).foo) // 0 in IE9!
var x = 10
console.log(x.foo) // 0 in IE9!
Can anyone explain this behaviour and/or suggest a workaround?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我无法解释这个结果,但您还要求解决方法。
演示: http://jsfiddle.net/ThinkingStiff/FJ7Qx/
脚本:
I can't explain that result, but you also asked for a workaround.
Demo: http://jsfiddle.net/ThinkingStiff/FJ7Qx/
Script:
为了避免玷污 API,可以在必须适应 IE9 的上下文中定义一个辅助函数:
这允许:
我很想了解更好的解决方法。
To avoid sullying the API, one could define a helper function in contexts where IE9 must be accommodated:
This allows:
I'd love to learn of a better workaround.