如何使“this”引用成员函数而不是其所有者类的实例

How can I make "this" refer to the member function and not the instance of its owner class?

本文关键字:所有者 实例 函数 何使 this 成员 引用      更新时间:2023-09-26
function foo(name){
  this.name = name;
  this.bar = function() {
    this.name = "John"
    console.log("bar's name is " + this.name);
  }
}
var blah = new foo("Peter");
console.log(blah.name);//"Peter"
blah.bar();//"bar's name is John"
console.log(blah.name);//"John"

上面的例子中,我怎样才能在功能栏中使"this"引用bar,而不是它的所有者foo? 期望的结果将是:

var blah = new foo("Peter");
console.log(blah.name);//"Peter"
blah.bar();//"bar's name is John"
console.log(blah.name);//"Peter"

blah.bar();//"bar's name is John"
在这里,您只需调用函数栏,如果您希望bar成为它自己的对象(并且具有名称等属性(,则需要执行以下操作:

var bar = new blah.bar();这将创建您期望的输出。

您的示例看起来根本不想使用this,而是一个不是任何属性的局部变量

function Foo(name) {
  this.name = name;
  this.bar = function bar() {
    var name = "John";
    console.log("the name is " + name);
  }
}
var blah = new Foo("Peter");
console.log(blah.name); // "Peter"
blah.bar();// "the name is John"
console.log(blah.name); // still "Peter"

请注意,函数的.name(blah.bar.name(是"bar"的(至少在我的示例中,在您的代码中它是空的(,就像Foo.name"Foo"一样,您甚至无法设置它。