2016-08-20 137 views
-2

我有以下的JS-對象:JavaScript中訪問其他公共方法內(同一目標)的公共方法

var obj = function(){ 
    this.var1 = "var1"; 

    this.getvar1 = function(){ 
     return this.var1; 
    } 
    this.call1 = function(){ 
     this.getvar1(); 
    } 
} 
  • 所有的方法都必須公開
  • 所有屬性都必須公開以及

問題:

如果我嘗試從obj-Object的另一個公共方法中調用obj-Object的公共方法,則「this」關鍵字引用公共方法本身而不是Object。

有沒有辦法解決這個問題?

+0

這不是一個對象,它是一個函數。 –

+0

函數是Javascript中的對象... – simplywing

+0

是的,但我的意思是它不是一個普通的對象。 –

回答

0

您可以指定this一個變量(self),並使用:

var obj = function(){ 
    var self = this; 
    self.var1 = "var1"; 

    self.getvar1 = function(){ 
     return self.var1; 
    } 
    self.call1 = function(){ 
     self.getvar1(); 
    } 
} 
0

你只是忘了從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())

+0

以及如果我必須調用多個函數? – simplywing

+0

你可以舉一個「調用多個函數」的例子嗎? – dfsq

+0

this.call1 = function(){this.function1(); this.function2();} – simplywing

0

也許你的意思是這樣的:

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

 
console.log(obj.call1())