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!
任何人都可以解释这种行为和/或建议解决方法吗?
答案 0 :(得分:2)
我无法解释这个结果,但你也要求解决方法。
演示: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())
答案 1 :(得分:1)
为了避免玷污API,可以在必须容纳IE9的上下文中定义辅助函数:
function _(n) { return new Number(n) }
这允许:
_(10).foo
我很想知道更好的解决方法。