国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

js構造函數創建對象加new與不加new的問題

huashiou / 2500人閱讀

摘要:今天看到這樣一道題填寫處的內容讓下面代碼支持問題操作符做了些什么呢創建一個新對象將構造函數的作用域賦給新對象因此就指向了這個新對象執行構造函數中的代碼為這個新對象添加屬性返回新對象。

今天看到這樣一道題:
填寫"TO DO"處的內容讓下面代碼支持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操作符做了些什么呢?

創建一個新對象;

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

執行構造函數中的代碼(為這個新對象添加屬性) ;

返回新對象。

問題2:不加new操作符直接執行構造函數會發生什呢?
function Obj(name){
    this.name = name;
    console.log(this); // 嚴格模式下是undefined 非嚴格模式下是window對象
}

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

哦,原來只是當作正常的函數調用來執行,Obj沒有返回值,故aundefined

兩者區別總結

使用new操作符創建對象,并且構造函數沒有返回值或者返回為基本數據類型,那么返回該對象,如下例:

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); // 同上

如果構造函數返回一個引用類型

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

對于不加new來執行構造函數來說,返回值就是構造函數的執行結果;對于加new關鍵字來執行構造函數而言,如果return的是基本數據類型,那么忽視掉該return值,如果返回的是一個引用類型,那么返回該引用類型。

那么問題答案你有了嗎?

參考答案?:

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92644.html

相關文章

  • 對,那是我夕陽下奔跑(剛過凌點,‘思否’第一篇文章 小白開始認真了 哈哈)

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

    vpants 評論0 收藏0
  • JavaScript裝逼指南

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

    oneasp 評論0 收藏0
  • 創建對象4種方式

    摘要:創建對象的種方式方式一通過對象字面量表示法又稱為直接量原始方式。例子在自定義構造函數的內部定義對象的方法函數的值賦給的屬性。 創建對象的4種方式 方式一:通過對象字面量表示法(又稱為直接量、原始方式)。object literals 方式二:通過new和構造函數Object()、String()等。 方式三:用自定義構造函數來初始化新對象。 方式四:通過Object.create()...

    seanlook 評論0 收藏0
  • JS題目總結:原型鏈/new/json/MVC/Promise

    摘要:數據管理,包括數據邏輯數據請求數據存儲等功能。負責處理的事件,并更新也負責監聽的變化,并更新,控制其他的所有流程。上面代碼就是一個最簡單的類,構造函數創建出來的對象自身有屬性,其原型上面有一個屬性。 JS題目總結:原型鏈/new/json/MVC/Promise 1原型鏈相關 showImg(https://segmentfault.com/img/remote/14600000161...

    biaoxiaoduan 評論0 收藏0
  • JS中ArrayAPI學習筆記

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

    tolerious 評論0 收藏0

發表評論

0條評論

huashiou

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<