Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 最具性能的绑定模式";“中学”;性质_Javascript_Node.js - Fatal编程技术网

Javascript 最具性能的绑定模式";“中学”;性质

Javascript 最具性能的绑定模式";“中学”;性质,javascript,node.js,Javascript,Node.js,假设我们有一个老式JavaScript: let obj = { foo: function(){ // this === obj }, bar: function(){ // this === obj } } 但是如果我们想将一些属性附加到foo和bar,比如: obj.foo.x = function(){ // this !== obj } obj.bar.y = function(){ // this !== obj }

假设我们有一个老式JavaScript:

let obj = {
  foo: function(){
      // this === obj
  },
  bar: function(){
       // this === obj
  }
}
但是如果我们想将一些属性附加到foo和bar,比如:

obj.foo.x = function(){
     // this !== obj
}

obj.bar.y = function(){
     // this !== obj
}
要将
obj.foo.x
obj.bar.y
中的“this”值绑定到obj,最有效的模式是什么

有时我们可以直接引用obj,而不是使用
。但是,如果obj是另一个对象的原型,那么直接引用obj将不会产生正确的结果。我需要在这里使用
这个
值(我想)。

换句话说,这是行不通的:

obj.foo.x = function(){

}.bind(obj);

obj.bar.y = function(){

}.bind(obj);
用这个就可以了

    let obj = {
  foo: function(){
      // this === obj
  },
  x: function(){
      // this === obj
  },
  bar: function(){
       // this === obj
    return this;
  }
}

然后可以调用
obj.bar().x()

@str我如何使用这里可能的副本我链接了文档,我建议阅读它。我已经使用JS大约3年了,我知道Function.prototype.bind:)我不确定如何在这里使用它。如果这很明显,那么请添加一个答案,我将向上投票。我不希望x是obj的直接属性,我需要x是obj的“次要”属性。