• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    js構(gòu)造函數(shù)創(chuàng)建對象是否加new問題

    來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:21:11
    文檔

    js構(gòu)造函數(shù)創(chuàng)建對象是否加new問題

    js構(gòu)造函數(shù)創(chuàng)建對象是否加new問題:今天看到這樣一道題: 填寫TO DO處的內(nèi)容讓下面代碼支持a.name = name1; b.name = name2; function Obj(name){ // TO DO } obj. /* TO DO */ = name2; var a = Obj(name1); var b = new Obj;
    推薦度:
    導讀js構(gòu)造函數(shù)創(chuàng)建對象是否加new問題:今天看到這樣一道題: 填寫TO DO處的內(nèi)容讓下面代碼支持a.name = name1; b.name = name2; function Obj(name){ // TO DO } obj. /* TO DO */ = name2; var a = Obj(name1); var b = new Obj;

    今天看到這樣一道題:

    填寫"TO DO"處的內(nèi)容讓下面代碼支持a.name = "name1"; b.name = "name2";

    function Obj(name){
    // TO DO
    }
    obj. /* TO DO */ = "name2";
    var a = Obj("name1");
    var b = new Obj;

    問題1:new操作符做了些什么呢?

    創(chuàng)建一個新對象;

    將構(gòu)造函數(shù)的作用域賦給新對象(因此 this 就指向了這個新對象) ;

    執(zhí)行構(gòu)造函數(shù)中的代碼(為這個新對象添加屬性) ;

    返回新對象。

    問題2:不加new操作符直接執(zhí)行構(gòu)造函數(shù)會發(fā)生什呢?

    function Obj(name){
    this.name = name;
    console.log(this); // 嚴格模式下是undefined 非嚴格模式下是window對象
    }
    var a = Obj("name1");
    console.log(a); // 結(jié)果 => undefined
    

    哦,原來只是當作正常的函數(shù)調(diào)用來執(zhí)行,Obj沒有返回值,故a是undefined。

    兩者區(qū)別總結(jié)

    使用new操作符創(chuàng)建對象,并且構(gòu)造函數(shù)沒有返回值或者返回為基本數(shù)據(jù)類型,那么返回該對象,如下例:

    function Obj(name){
    this.name = name;
    }
    var b = new Obj;
    console.log(b); // Obj { name: undefined }
    function Obj(name){
    this.name = name;
    return 'chic';
    }
    var b = new Obj;
    console.log(b); // 同上

    如果構(gòu)造函數(shù)返回一個引用類型:

    function Obj(name){
    this.name = name;
    return {};
    }
    var b = new Obj;
    console.log(b); // {}

    總結(jié)

    對于不加new來執(zhí)行構(gòu)造函數(shù)來說,返回值就是構(gòu)造函數(shù)的執(zhí)行結(jié)果;對于加new關(guān)鍵字來執(zhí)行構(gòu)造函數(shù)而言,如果return的是基本數(shù)據(jù)類型,那么忽視掉該return值,如果返回的是一個引用類型,那么返回該引用類型。

    那么問題答案你有了嗎?

    參考答案 :

    function Obj(name){
    this.name = name;
    return this;
    }
    Obj.prototype.name = "name2";
    var a = Obj("name1");
    var b = new Obj;

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    js構(gòu)造函數(shù)創(chuàng)建對象是否加new問題

    js構(gòu)造函數(shù)創(chuàng)建對象是否加new問題:今天看到這樣一道題: 填寫TO DO處的內(nèi)容讓下面代碼支持a.name = name1; b.name = name2; function Obj(name){ // TO DO } obj. /* TO DO */ = name2; var a = Obj(name1); var b = new Obj;
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 欧美亚洲精品中文字幕乱码免费高清| 亚洲精品无码mv在线观看网站| 久久无码精品一区二区三区| 国产成人亚洲精品青草天美| 久草热久草热线频97精品| 国产午夜精品一区二区三区漫画| 精品久久久久中文字| 国内精品91最新在线观看| 亚洲精品无码成人片久久| 久久91这里精品国产2020| 午夜精品成年片色多多| 国产精品视频一区二区噜噜| 亚洲人午夜射精精品日韩| 精品国产一区二区三区AV性色| 精品一区二区三区中文字幕| 久久精品a亚洲国产v高清不卡| 无码精品前田一区二区| 国产精品高清在线| 久久99热精品| 99精品视频在线观看| 亚洲AV永久无码精品| 久久se精品一区精品二区国产| 亚洲国产精品久久久久婷婷软件| 精品久久久久久无码专区不卡| 人妻少妇精品久久| 久久久精品人妻一区二区三区四| 合区精品中文字幕| 久草欧美精品在线观看| 国产精品美女网站在线观看| 欧美精品华人在线| 国产91久久精品一区二区| 精品人妻va出轨中文字幕| 亚洲精品国产av成拍色拍| 免费精品视频在线| 久久精品三级视频| 精品久久久久久国产三级| 精品国产青草久久久久福利| 国产香蕉国产精品偷在线| 国产午夜精品久久久久九九电影| 91av国产精品| 99热都是精品久久久久久|