当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中?

jsfiddle.net/V2sHg/2/

当使用"new Number(value)"但不直接使用" Number "时,它在FF上对我有效:

试题:

var n = new Number(8);
n.foo(); --> 8

最新更新