天天看點

JavaScript基礎知識1——了解this指向

                                                         this指向

          JavaScript的this總是指向一個對象,具體指向的對象根據運作時函數執行的環境動态綁定的,并不是函數聲明時的環境,簡單的了解就算函數或方法被那個對象調用就指向改對象。

          this的指向大緻分為以下4種;

                1. 作為對象的方法調用,指向該對象;

var color={
	          Item:"red",
	          getItem:function(){
                     console.log(this===color);//true
                     console.log(this.Item);//"red"
	          }
            }  
            color.getItem();
           

              2. 作為普通函數調用,指向window;

window.name='global';
           var getName=function(){
	      return this.name;
           }
           console.log(getName());//gloabl
           /**嚴格模式下,this是undifined**\
           

              3.構造器調用,無對象傳回時指向該對象,有對象傳回指向被傳回對象;

var myClazz = Function(name) {
	           this.name = name;
           };
           var obj = new myClazz('jane');
           console.log(obj.name);//jane
           
var myClazz = Function(name) {
	         this.name = name;
	  	     return {name:'rose'};
           };
           var obj = new myClazz('jane');
           console.log(obj.name);//rose
           

              4.與普通函數調用相比,call、apply調用能動态改變this指向。

var obj = {
               name: 'jane'
           };
           var obj_ = {
               name: 'rose'
           };
           window.name = 'window';
           var getName = function(){
               alert(this.name);
           };
           getName(); // 輸出: window            /**普通函數調用指向window**\
           getName.call(obj); // 輸出: jane      /**this指向obj**\
           getName.call(obj_); // 輸出: rose     /**this指向obj_;**\