Неожиданное поведение в Firefox, когда getter возвращает функцию - PullRequest
4 голосов
/ 21 октября 2011
Object.defineProperty(Number.prototype, 'foo', {
  get: function () {
    var me = this
    return function () { return me.valueOf() }
  }
})

console.log(5..foo())

Это записывает 5 в Chrome, но 0 в Firefox.

Object.defineProperty(Number.prototype, 'bar', {
  get: function () {
    return this.valueOf()
  }
})

console.log(5..bar)

Это регистрирует 5 в обоих браузерах, как и ожидалось.

Может кто-нибудь объяснить это поведение и, возможно, предложитькак можно переписать первый пример для работы в Firefox, как в Chrome?

jsfiddle.net / V2sHg / 2 /

1 Ответ

0 голосов
/ 29 декабря 2011

Это работает для меня на FF, когда используется «новый номер (значение)», но не используется напрямую «число»:

Попробуйте:

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