Jq this的指向問題


JavaScript 有一套完全不同於其它語言的對 this 的處理機制。 在五種不同的情況下 ,this 指向的各不相同。
1.全局范圍內 this
2. 這樣也是全局 test.foo();
3.方法調用,指向test test.foo();
4. new foo(); 指向新創建的函數
5.apply,call 函數內的 this 將會被 顯式設置為函數調用的第一個參數。

this指向核心的一句 :哪個對象調用函數,函數里面的this指向哪個對象。

1.第一種情況,這個this指向的是全局對象,因為它是在全局調用的
 var name="abc";
   function test()
  {
      console.log(name);//abc
 }
test();
2 new這個實例會改變this的指向,因為用new后開辟一個新的內存,然后this會指向新開辟的內存

    var name="小蘭";
    function test(name)
     {
         this.name=name
         console.log(this.name);//小黑
      }
   var windownew=new test("小黑")();




下面兩例子可以很明顯的對比出來,誰調用的函數this就指向誰,第一個例子很明顯是eat這個調用的,所以其this就指向eat的作用域,第二個例子很明顯是全局調用,所以this指向全局變量
   var name="小白";
    function Animal(name,age){
                this.name=name;
                this.age=age;
            }
            //原型中添加方法
            Animal.prototype.eat={ 
              name:"小黃",
              methodone:function(){
                console.log(this.name)//小黃
              },
              methodtwo:function(){
                console.log(this.name)//小白
              }                      
            }; 
            var dog=new Animal("小蘇",20);
        var dogtwo=dog.eat.methodtwo;
        dog.eat.methodone(); 
        dogtwo();
 
         

 

 
        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM