JavaScript--this指針的使用

重要的事情先講三遍:誰調(diào)用this,this指向誰!誰調(diào)用this,this指向誰!誰調(diào)用this,this指向誰!
(1)this由test調(diào)用,this指向window,結果this.m的值為100。

window.m=100;//window.m=100等價于 this.m=100
    function test(){
        alert(this.m);
    }
    window.test();//test()等同于window.test()

(2)this由test調(diào)用,test由obj調(diào)用,因此this.m的值就為obj.m的值,為100.

this.m=1000;
    var obj = {
        m:100,
        test:function(){
            alert(this.m);
        }
    }
    obj.test();

(3)return function()已經(jīng)將自己從obj中拋出來了,此時它指向外面的window,因此this.m的值為1000

this.m=1000;
    var obj = {
        m:100,
        test:function(){
            alert(this.m);
            
            //閉包
            return function(){
                alert(this.m);
            }

        }
    };
    obj.test()();

obj.test()一個括號調(diào)用test()的函數(shù),但不包括return后的函數(shù);
obj.test()()兩個括號可以執(zhí)行到return后的函數(shù)。
也可以寫成:(obj.test())();
或者:var t = obj.test(); window.t();

(4)當在外部調(diào)用函數(shù)test()時,this指向window,就會執(zhí)行color:"green"的代碼。點擊按鈕時,是button調(diào)用test()函數(shù),因此this指向button。
html

<input type="button" id="test" value="點擊一下" style="color:red;">

JavaScript

var style = {
        color:"green"
    }
    function test(){
        alert(this.style.color);//this指向button
    }
    document.getElementById("test").onclick=test;

    window.test();

(5)結果為1,p調(diào)用了geta(),geta()被掛在test原型上,p又是test聲明出來的,因此p應該找到test()下的this.a 與外面的1000無關。

 this.a=1000;
   function test(){
    this.a=1;
   }
   test.prototype.geta = function() {
    return this.a;
   };
   var p = new test;
   console.log(p.geta());//1

(6)結果為1,p是test()聲明的,因此直接執(zhí)行test()函數(shù),與test.prototype.a = 100;無影響

function test(){
    this.a=1;
  }
  test.prototype.a = 100;
  var p = new test;
  console.log(p);//1

(7)結果仍然為1,因為this的主動權大,因為它在構造函數(shù)中。

  function test(){
    this.a=1;
  }
  test.prototype.a = 100;
  var p = new test;
  console.log(p.a);//1

內(nèi)容為JavaScript關于this的小總結,如果有不正確的地方歡迎小伙伴們指正哦~

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,683評論 0 4
  • this this是javascript的一個關鍵字,隨著函數(shù)使用場合不同,this的值會發(fā)生變化。但是總有一個原...
    西瓜w閱讀 441評論 0 0
  • 1 今天是學校組織的第一次月考,我緊張地坐在位置上等待著老師發(fā)試卷。 我不是學霸,卻也不是學渣,徘徊在中間。這是個...
    Angel烏安閱讀 287評論 0 1
  • 人生,如一局落子無悔的棋,如一場鑼鼓喧天的戲,如一片一時風平浪靜又一時波濤洶涌的大海......你我都是這個世界里...
    乙乙啊閱讀 402評論 0 1
  • 進程與公告 一、編者的話: 各位宗親好。欣聞陳氏宗親商議修建祠堂,無比興奮。千秋萬代,有根可尋;我等宗親,無上榮光...
    花花浪閱讀 1,347評論 0 2

友情鏈接更多精彩內(nèi)容