2013-06-20 106 views
0

我有一個帶有兩個函數的js對象。從myFirstFunction()撥打mySecondFunction()的正確方法是什麼?應該是this.mySecondFunction()?或MyObject.mySecondFunction()?調用同一個對象的方法

我想我會用「這個」,但如果是一個事件處理程序的內部,然後在「這」指的是DOM元素,而不是對象:(

var MyObject = { 
    firstFunction: function() { 
    whatgoeshere???.mySecondFunction(); 
    }, 

    secondFunction: function() { 
    console.log('Hi!'); 
    } 
} 
+1

你在調用mySecondFunction()嗎?因爲我只看到函數firstFunction()和secondFunction()。沒有mySecondFunction()。 this.secondFunction()應該可以工作。 – Tap

+0

OP會輸入錯誤MY - SecondFunction() – Thalaivar

回答

1
var MyObject = { 
    firstFunction: function() { 
    this.mySecondFunction(); 
    }, 

    secondFunction: function() { 
    console.log('Hi!'); 
    }, 
    mySecondFunction: function() { 
    alert('Hi!'); 
    } 
} 

MyObject.firstFunction(); 

的當前實例以上就是你打算做

//declaring the constructor 
function MyObject() { 
    this.someProperty = 'whatever';   
} 
// declaring instance methods 
MyObject.prototype = { 
    firstFunction: function() { 
     this.secondFunction(); 
    }, 
    secondFunction: function() { 
     alert("Cool"); 
    } 
}; 

var am = new MyObject();  
am.firstFunction(); 

使用原型對象(它是構造函數的一個屬性)定義類型的方法也是一個好主意。 this的值將是您嘗試初始化的新對象。

0

在這種情況下,它myObject的,因爲它不是一個實例

如果you'ld做過類似:。

var MyObject = function() { 
}; 

MyObject.prototype.firstFunction = function() { 
    this.secondFunction(); 
}; 

MyObject.prototype.secondFunction = function() { 
    console.log('Hi!'); 
}; 

var instance = new MyObject(); 
instance.firstFunction(); 

然後,創建一個新的實例,並可以使用this換句話說:在this指物體

相關問題