我有以下功能:如何調用裏面的函數,你可以通過這個訪問參數?
function outer(){
index = 1;
inner();
}
function inner(){
alert(this.index);
}
我想看看1警報。另外我想要那個函數內部沒有參數。
可能嗎?
我有以下功能:如何調用裏面的函數,你可以通過這個訪問參數?
function outer(){
index = 1;
inner();
}
function inner(){
alert(this.index);
}
我想看看1警報。另外我想要那個函數內部沒有參數。
可能嗎?
function outer() {
this.index = 1;
inner.call(this);
}
但是如果inner有一個參數,它就不起作用。你能以這種方式提出建議嗎? – gstackoverflow 2014-11-02 23:46:48
你想要傳入內部? – 2014-11-02 23:50:37
「調用」函數與使用正常語法調用它不同。請參閱https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call - 您可以在這裏看到一個工作示例:http://jsfiddle.net/r77gg0t4/ – Fiddles 2014-11-02 23:52:22
調用函數時,如果定義了outer()
功能範圍之外的index
變量指定的背景下,這將是提供給兩種功能。
var index = 0;
function outer() {
index = 1;
inner();
}
function inner() {
alert(index);
}
outer(); // alerts "1"
您可以使用應用函數的對象,這將控制方面:
function blarg() {
var self = this;
self.outer = function(){
self.index = 1;
self.inner();
};
self.inner = function(){
alert(self.index);
};
self.outer(); // Call it in the constructor
self.go = function() {
self.outer(); // Or in another function
};
}
var blargObj = new blarg();
blargObj.go();
您的代碼只適用於您將索引添加到全局對象。您會發現,在瀏覽器中執行代碼時,window.index = 1,並且從新blarg()創建的上下文沒有索引屬性。 – 2014-11-02 23:54:48
謝謝@Steven。總是要小心,假設「這」實際上是什麼。 – Fiddles 2014-11-03 00:10:05
'this'是用於訪問對象的屬性,而不是訪問本地變量。除非將所有變量放入對象並傳遞對象引用,否則JavaScript不提供通過對象引用訪問局部變量的方法。 – jfriend00 2014-11-02 23:44:32