繁体   English   中英

当从数字文字访问`Number.prototype`的属性时,IE9中的奇怪“getter”行为

[英]Strange “getter” behaviour in IE9 when accessing property of `Number.prototype` from a number literal

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!

任何人都可以解释这种行为和/或建议一个解决方法吗?

jsfiddle.net/yr7hQ/

我无法解释这个结果,但你也要求解决方法。

演示: http//jsfiddle.net/ThinkingStiff/FJ7Qx/

脚本:

Number.prototype.foo = function() { return Number( this ) };

console.log(10.5.foo())
console.log(10..foo())
console.log(10.0.foo())
console.log(10.01.foo())
console.log((10).foo())
var x = 10
console.log(x.foo())

为了避免玷污API,可以在必须容纳IE9的上下文中定义辅助函数:

function _(n) { return new Number(n) }

这允许:

_(10).foo

我很想知道更好的解决方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM