js用new實例化對象與直接調用的this的區(qū)別

function Fun(argument1,argument2){
return this;
}
//直接調用
var f1 = Fun(); // window {}
//實例化對象
var f2 = new Fun(); // Fun {}

f1 只是調用 Fun函數,而 f2是實例化對象 Fun锰霜。兩個的this指向的不是同個地方行施。調用函數的this指向的是window,實例化對象的this指向的是對象本身田弥。

(構造函數的命名通常使用駝峰命名法履磨,首字母大寫税朴,以此和普通的函數區(qū)分開來宰啦,這是一種習慣用法肴颊。)

測試例子:

function fun1(){
    //沒有實例化fun1(), 直接調用,這里的this指的是window對象
    console.log(this);
    function fun2(){
         //沒有實例化fun2(), 直接調用供填,這里的this指的是window對象
        console.log(this);
    }
    fun2();
    
    function fun3(){
         //a實例化fun3(), 這里的this指的是對象本身
        console.log(this);
    }
    var a = new fun3();
}

var f = fun1();

//輸出的結果如下

>> window {}
>> window {}
>> fun3 {}

如上拐云,f只是調用fun1,輸出的第一個this是指向window的。fun2也只是調用近她,所以this也是指向windowde叉瘩。a是實例化的對象,this指向的是fun3實例化后的對象粘捎。

如果做下面調整薇缅。

function fun1(){
    // f 實例化fun1(), 這里的this指的是fun1對象本身
    console.log(this);
    function fun2(){
        //沒有實例化fun2(), 直接調用,這里的this指的是window對象
        console.log(this);
    }
    fun2();
    
    function fun3(){
         //a實例化fun3(), 這里的this指的是對象本身
        console.log(this);
    }
    var a = new fun3();
}

var f = new fun1();

//輸出的結果如下

>> fun1 {} 
>> window {}
>> fun3 {}

如上攒磨,fun1跟fun3是被實例化捅暴,this指向對象本身,fun2只是調用咧纠,this指向window。

那給this的屬性賦值會有什么樣的結果呢泻骤?

this.alia = 'window';
this.win1 = 'window property'
function fun1(){
    this.alia = 'fun1'; 
    this.ofun1 ="only fun1 have"
    console.log("fun1的alia : " + this.alia);   //"fun1的alia :fun1"
    console.log(this.win1);   // "window property"
    
    function fun2 (){
        this.alia = 'fun2';
        console.log("fun2的alia :" + this.alia);    //"fun2的alia :fun2"
        console.log(this.ofun1); // "only fun1 have"
        console.log(this.win1);   // "window property"
        
        this.ofun1 = "fun2 change"
    
    }
    fun2();
    console.log("this.ofun1 :" +this.ofun1 );   //this.ofun1 :fun2 change
}
fun1();

調用函數里面的this屬性賦值都是給window賦值的漆羔。

如果 fun1()改成 var a = new fun1(); 呢?

this.alia = 'window';
this.win1 = 'window property';
var a = new fun1();

function fun1(){
    //fun1內的this指的是 a 對象狱掂,是fun1{};

    this.alia = 'fun1'; 
    this.ofun1 ="only fun1 have"
    console.log("fun1的alia : " + this.alia);   //"fun1的alia :fun1"
    console.log(this.win1);   // "undefine"
    
    function fun2 (){
        // this指的是window演痒。
        //window沒有ofun1屬性,所以輸出了undefine
        console.log(this.ofun1); // "undefine"
        
        //下面都是window已有的屬性
        console.log("fun2的alia :" + this.alia);    //"fun2的alia :window"
        console.log(this.win1);   // "window property"
        
        //給window添加ofun1屬性
        this.ofun1 = "change in fun2"
        
    }
    fun2();
    // 這時this 是 a對象本身的fun1{}
    console.log("this.ofun1 :" +this.ofun1 );   //this.ofun1 :only fun1 have
    
    //window.ofun1剛剛已經在fun2里面賦值了,所以輸出有值
    console.log("window.ofun1 :" +window.ofun1 );   //window.ofun1 :change in fun2
}

大家仔細看看輸出的結果趋惨。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末鸟顺,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子器虾,更是在濱河造成了極大的恐慌讯嫂,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兆沙,死亡現(xiàn)場離奇詭異欧芽,居然都是意外死亡,警方通過查閱死者的電腦和手機葛圃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門千扔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來憎妙,“玉大人,你說我怎么就攤上這事曲楚±逋伲” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵龙誊,是天一觀的道長抚垃。 經常有香客問我,道長载迄,這世上最難降的妖魔是什么讯柔? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮护昧,結果婚禮上魂迄,老公的妹妹穿的比我還像新娘。我一直安慰自己惋耙,他們只是感情好捣炬,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绽榛,像睡著了一般湿酸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上灭美,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天推溃,我揣著相機與錄音,去河邊找鬼届腐。 笑死铁坎,一個胖子當著我的面吹牛,可吹牛的內容都是我干的犁苏。 我是一名探鬼主播硬萍,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼围详!你這毒婦竟也來了朴乖?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤助赞,失蹤者是張志新(化名)和其女友劉穎买羞,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體雹食,經...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡哩都,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了婉徘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漠嵌。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡咐汞,死狀恐怖,靈堂內的尸體忽然破棺而出儒鹿,到底是詐尸還是另有隱情化撕,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布约炎,位于F島的核電站植阴,受9級特大地震影響,放射性物質發(fā)生泄漏圾浅。R本人自食惡果不足惜掠手,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狸捕。 院中可真熱鬧喷鸽,春花似錦、人聲如沸灸拍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸡岗。三九已至混槐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間轩性,已是汗流浹背声登。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留揣苏,地道東北人悯嗓。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像舒岸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子芦圾,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內容