在java腳本中,當我們創建一個新的構造函數時,我們使用「this.property name」。我們使用「this」來引用當前正在使用的對象。但是在一般函數中,我們不使用「this」關鍵字。根據我的理解,如果我們在函數中使用「this」,它應該指向當前函數。但是,當我們使用它時,並沒有產生預期的結果。爲什麼?示例爲什麼「這個」不起作用?
function greet(name){console.log(「Hello」+ this.name); }
輸出是「你好」然後空白。
在java腳本中,當我們創建一個新的構造函數時,我們使用「this.property name」。我們使用「this」來引用當前正在使用的對象。但是在一般函數中,我們不使用「this」關鍵字。根據我的理解,如果我們在函數中使用「this」,它應該指向當前函數。但是,當我們使用它時,並沒有產生預期的結果。爲什麼?示例爲什麼「這個」不起作用?
function greet(name){console.log(「Hello」+ this.name); }
輸出是「你好」然後空白。
因爲在一般函數中,我們默認引用'window'對象,所以我們所做的任何事情都會變成窗口級別的對象或變量。
一樣,
function fun(){
this.title = "window";
}
fun();
或window.fun(); //兩者相同。由於我們調用window.fun,this.title表示window.fun。
如果你創建這樣的:
VAR OBJ = {}
**我們做標題的obj級別,你可以這樣做:
fun.call(obj);
現在,您可以調用obj.title。**
謝謝。我把這個改成了window.this。現在它工作正常。 –
@Igor,對不起,我不明白你的意見。 –
閱讀this約this
在大多數情況下,this
值由一個函數是如何被調用來確定。
當您在JavaScript中使用new
關鍵字時,會創建一個隱式對象並從函數調用中返回。函數this
的內部引用新創建的對象。調用沒有new
的函數不具有相同的行爲。
請參閱:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new
您的代碼是哪裏? –
用'new'關鍵字調用任何函數,函數內的'this'將引用一個新構建的對象 – Igor
您的代碼片段在哪裏,因此我們可以連擊以幫助正確的方向@PiyaliGhosh –