請教各位大神。當調(diào)用函數(shù)的 call 方法時,內(nèi)部的 this 究竟是如何指向的?當 call 傳入為對象時這個比較好理解。this 直接指向這個對象。但是當傳入的是一個函數(shù)呢?比如下面這個例子function class1 () { this.message = "yeah";}function class2 () { this.sayMessage = function () { alert(this.message); }}class2.call(class1);alert(class1.sayMessage);class1.sayMessage(); //undefinedclass 可以獲得 sayMessage 這個方法。但是執(zhí)行這個方法返回的結(jié)果是 undefined 。我個人的理解是因為沒有定義 class1.message ,所以返回未定義。但是,當代碼改為如下時,我蒙了。var message = "hi";function class1 () { this.message = "yeah";}function class2 () { this.message = "hello"; this.sayMessage = function () { alert(this.message); }}class2.call(class1);alert(class1.sayMessage);class1.sayMessage(); // helloclass1.message = "msg";class1.sayMessage(); //msg當未對 class1.message 賦值時,調(diào)用 class1.sayMessage() 為何返回的是 class2 中的 message 屬性??整個過程中 this 究竟是如何指向的?
JavaScript 中 this 指向問題
炎炎設(shè)計
2019-03-05 17:15:28