javascript引擎中的Bug?Array.prototype.sort with Function.call进行回调

javascript引擎中的Bug?Array.prototype.sort with Function.call进行回调,javascript,Javascript,我不确定这是否是一个错误。下面的场景在Chrome和Firefox中都失败了,所以我不能完全确定。如果这是我的错,有人能告诉我为什么这不起作用吗 下面是一个简化的bug示例: var bObj = { list: [4,5,23,5,90,1], sort: function() { var cb = function(a, b) { return a - b; }, that = this; this.list.sort(function(a, b)

我不确定这是否是一个错误。下面的场景在Chrome和Firefox中都失败了,所以我不能完全确定。如果这是我的错,有人能告诉我为什么这不起作用吗

下面是一个简化的bug示例:

var bObj = {
  list: [4,5,23,5,90,1],
  sort: function() {
    var cb = function(a, b) {
      return a - b;
    }, that = this;
    this.list.sort(function(a, b) {cb.call(that, a, b);}); 
  }
};
bObj.sort();
console.log(bObj.list);

var wObj = {
  list: [4,5,23,5,90,1],
  sort: function() {
    var cb = function(a, b) {
      return a - b;
    };
    this.list.sort(cb); 
  }
};
wObj.sort();
console.log(wObj.list);
这将产生:

[4, 5, 23, 5, 90, 1]
[1, 4, 5, 5, 23, 90]
对于Function.call,我需要维护上下文,因为我在回调中引用了对象属性。我最终通过一个简单的结束来解决这个问题。我仍然想知道为什么失败了

谢谢您的排序功能没有返回任何内容:

  sort: function() {
    var cb = function(a, b) {
      return a - b;
    };
    var that = this;
    this.list.sort(function(a, b) {
      cb.call(that, a, b); // <--- here's your bug in the javascript engine.
    }); 
  }

即时-1。不要乞求bug,尤其是标题中经过良好测试的代码。请重写它,只说明观察结果。你只是忘记了报税表。错误在用户身上,和往常一样…谢谢,没有傲慢。我想知道为什么这不起作用。根据经验,这几乎是不可能的?除非您使用的是该语言的alpha/beta版本,否则该语言本身存在缺陷。投诉是关于您询问的方式。您暗示这很可能是JS中的错误,而不是您的代码。如果你认为这是你的错,为什么要这么说呢?bindthis在这种情况下没有用吗?OP希望能够访问bObj的作用域,就像在回调函数中一样。
  sort: function() {
    var cb = function(a, b) {
      return a - b;
    };
    this.list.sort(cb.bind(this)); 
  }