Javascript从其他公共方法(同一对象)内部访问公共方法

Javascript access public methods from inside other public methods (same Object)

本文关键字:方法 对象 访问 内部 其他 Javascript      更新时间:2023-09-26

我有以下JS-Object:

var obj = function(){
   this.var1 = "var1";
   this.getvar1 = function(){
       return this.var1;
   }
   this.call1 = function(){
       this.getvar1();
   }
}
  • 所有方法必须是public
  • 所有属性也必须是public

问题:

如果我试图从obj-Object的另一个公共方法内部调用obj-Object的公共方法,"this"关键字指的是公共方法本身,而不是Object。

有办法绕过这个吗?

您可以将this分配给变量(self)并使用它:

var obj = function(){
   var self = this;
   self.var1 = "var1";
   self.getvar1 = function(){
       return self.var1;
   }
   self.call1 = function(){
       self.getvar1();
   }
}

你只是忘了从call1回来。添加return,它将按预期工作:

var obj = function() {
   this.var1 = "var1";
   this.getvar1 = function() {
       return this.var1;
   }
   
   this.call1 = function() {
       return this.getvar1();
   }
}
var a = new obj()
console.log( a.call1() )

也许你是这个意思:

const obj = {
  var1: 'var1'
 ,getvar1() {
    return this.var1
  }
 ,call1() {
    return this.getvar1()
  }
}
console.log(obj.call1())