成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

js構(gòu)造函數(shù)創(chuàng)建對(duì)象加new與不加new的問(wèn)題

huashiou / 2550人閱讀

摘要:今天看到這樣一道題填寫(xiě)處的內(nèi)容讓下面代碼支持問(wèn)題操作符做了些什么呢創(chuàng)建一個(gè)新對(duì)象將構(gòu)造函數(shù)的作用域賦給新對(duì)象因此就指向了這個(gè)新對(duì)象執(zhí)行構(gòu)造函數(shù)中的代碼為這個(gè)新對(duì)象添加屬性返回新對(duì)象。

今天看到這樣一道題:
填寫(xiě)"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;
問(wèn)題1:new操作符做了些什么呢?

創(chuàng)建一個(gè)新對(duì)象;

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

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

返回新對(duì)象。

問(wèn)題2:不加new操作符直接執(zhí)行構(gòu)造函數(shù)會(huì)發(fā)生什呢?
function Obj(name){
    this.name = name;
    console.log(this); // 嚴(yán)格模式下是undefined 非嚴(yán)格模式下是window對(duì)象
}

var a = Obj("name1");
console.log(a); // 結(jié)果 => undefined

哦,原來(lái)只是當(dāng)作正常的函數(shù)調(diào)用來(lái)執(zhí)行,Obj沒(méi)有返回值,故aundefined。

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

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

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ù)返回一個(gè)引用類(lèi)型

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

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

那么問(wèn)題答案你有了嗎?

參考答案?:

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/92644.html

相關(guān)文章

  • 對(duì),那是我夕陽(yáng)下奔跑(剛過(guò)凌點(diǎn),‘思否’第一篇文章 小白開(kāi)始認(rèn)真了 哈哈)

    摘要:我們將通過(guò)一個(gè)構(gòu)造函數(shù)創(chuàng)建的對(duì)象,稱(chēng)為是該類(lèi)的實(shí)例孫悟空男玉兔精女奔波霸男使用可以檢查一個(gè)對(duì)象是否是一個(gè)類(lèi)的實(shí)例語(yǔ)法對(duì)象構(gòu)造函數(shù)如果是,則返回,否則返回所有的對(duì)象都是的后代,所以任何對(duì)象和做檢查時(shí)都會(huì)返回 使用對(duì)象字面量模式來(lái)創(chuàng)建一個(gè)對(duì)象 (它也叫單例模式 //JS與其他語(yǔ)言的單例模式有很大的區(qū)別(如Java),但這就是語(yǔ)言的區(qū)別) var obj = {}; ...

    vpants 評(píng)論0 收藏0
  • JavaScript裝逼指南

    摘要:構(gòu)造函數(shù)很多教程都告訴我們,不要直接用內(nèi)置對(duì)象的構(gòu)造函數(shù)來(lái)創(chuàng)建基本變量,例如的寫(xiě)法就應(yīng)該用的寫(xiě)法來(lái)取代。但是,構(gòu)造函數(shù)注意是大寫(xiě)的有點(diǎn)特別。構(gòu)造函數(shù)接受的參數(shù)中,第一個(gè)是要傳入的參數(shù)名,第二個(gè)是函數(shù)內(nèi)的代碼用字符串來(lái)表示。 如何寫(xiě)JavaScript才能逼格更高呢?怎樣才能組織JavaScript才能讓別人一眼看出你不簡(jiǎn)單呢?是否很期待別人在看完你的代碼之后感嘆一句原來(lái)還可以這樣寫(xiě)呢?...

    oneasp 評(píng)論0 收藏0
  • 創(chuàng)建對(duì)象4種方式

    摘要:創(chuàng)建對(duì)象的種方式方式一通過(guò)對(duì)象字面量表示法又稱(chēng)為直接量原始方式。例子在自定義構(gòu)造函數(shù)的內(nèi)部定義對(duì)象的方法函數(shù)的值賦給的屬性。 創(chuàng)建對(duì)象的4種方式 方式一:通過(guò)對(duì)象字面量表示法(又稱(chēng)為直接量、原始方式)。object literals 方式二:通過(guò)new和構(gòu)造函數(shù)Object()、String()等。 方式三:用自定義構(gòu)造函數(shù)來(lái)初始化新對(duì)象。 方式四:通過(guò)Object.create()...

    seanlook 評(píng)論0 收藏0
  • JS題目總結(jié):原型鏈/new/json/MVC/Promise

    摘要:數(shù)據(jù)管理,包括數(shù)據(jù)邏輯數(shù)據(jù)請(qǐng)求數(shù)據(jù)存儲(chǔ)等功能。負(fù)責(zé)處理的事件,并更新也負(fù)責(zé)監(jiān)聽(tīng)的變化,并更新,控制其他的所有流程。上面代碼就是一個(gè)最簡(jiǎn)單的類(lèi),構(gòu)造函數(shù)創(chuàng)建出來(lái)的對(duì)象自身有屬性,其原型上面有一個(gè)屬性。 JS題目總結(jié):原型鏈/new/json/MVC/Promise 1原型鏈相關(guān) showImg(https://segmentfault.com/img/remote/14600000161...

    biaoxiaoduan 評(píng)論0 收藏0
  • JS中ArrayAPI學(xué)習(xí)筆記

    摘要:如果該函數(shù)的返回值大于,表示第一個(gè)成員排在第二個(gè)成員后面其他情況下,都是第一個(gè)元素排在第二個(gè)元素前面。第三次執(zhí)行,為上一輪的返回值,為第四個(gè)成員。第四次執(zhí)行,為上一輪返回值,為第五個(gè)成員。 JS中ArrayAPI學(xué)習(xí)筆記 記博客,時(shí)常回顧.尤其是面試之先回顧阮一峰標(biāo)準(zhǔn)庫(kù)Array對(duì)象 1 一些標(biāo)準(zhǔn)庫(kù)回顧 showImg(https://segmentfault.com/img/remo...

    tolerious 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<