91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中new操作符有什么用

發布時間:2022-03-24 14:55:06 來源:億速云 閱讀:106 作者:小新 欄目:web開發

這篇文章給大家分享的是有關JavaScript中new操作符有什么用的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

 js模擬new操作符的實現

這個問題如果你在掘金上搜,你可能會搜索到類似下面的回答:

JavaScript中new操作符有什么用 說實話,看第一遍,我是不理解的,我需要去理一遍原型及原型鏈的知識才能理解。所以我覺得MDN對new的解釋更容易理解:

new 運算符創建一個用戶定義的對象類型的實例或具有構造函數的內置對象的實例。new 關鍵字會進行如下的操作:

  1. 創建一個空的簡單JavaScript對象(即{});

  2. 鏈接該對象(即設置該對象的構造函數)到另一個對象 ;

  3. 將步驟1新創建的對象作為this的上下文 ;

  4. 如果該函數沒有返回對象,則返回this。

接下來我們看實現:

function Dog(name, color, age) {
  this.name = name;
  this.color = color;
  this.age = age;}Dog.prototype={
  getName: function() {
    return this.name  }}var dog = new Dog('大黃', 'yellow', 3)

上面的代碼相信不用解釋,大家都懂。我們來看最后一行帶new關鍵字的代碼,按照上述的1,2,3,4步來解析new背后的操作。

第一步:創建一個簡單空對象

var obj = {}

第二步:鏈接該對象到另一個對象(原型鏈)

// 設置原型鏈obj.__proto__ = Dog.prototype

第三步:將步驟1新創建的對象作為 this 的上下文

// this指向obj對象Dog.apply(obj, ['大黃', 'yellow', 3])

第四步:如果該函數沒有返回對象,則返回this

// 因為 Dog() 沒有返回值,所以返回objvar dog = obj
dog.getName() // '大黃'

需要注意的是如果 Dog() 有 return 則返回 return的值

var rtnObj = {}function Dog(name, color, age) {
  // ...
  //返回一個對象
  return rtnObj}var dog = new Dog('大黃', 'yellow', 3)console.log(dog === rtnObj) // true

接下來我們將以上步驟封裝成一個對象實例化方法,即模擬new的操作:

function objectFactory(){
    var obj = {};
    //取得該方法的第一個參數(并刪除第一個參數),該參數是構造函數
    var Constructor = [].shift.apply(arguments);
    //將新對象的內部屬性__proto__指向構造函數的原型,這樣新對象就可以訪問原型中的屬性和方法
    obj.__proto__ = Constructor.prototype;
    //取得構造函數的返回值
    var ret = Constructor.apply(obj, arguments);
    //如果返回值是一個對象就返回該對象,否則返回構造函數的一個實例對象
    return typeof ret === "object" ? ret : obj;}

感謝各位的閱讀!關于“JavaScript中new操作符有什么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

三江| 连平县| 西青区| 彭阳县| 梨树县| 岳西县| 长丰县| 平谷区| 崇阳县| 横峰县| 柳江县| 昌宁县| 东乡族自治县| 手游| 尼木县| 新安县| 航空| 盱眙县| 宁都县| 乳源| 靖宇县| 千阳县| 海兴县| 晴隆县| 林芝县| 天津市| 登封市| 永丰县| 辽阳县| 乳山市| 莱西市| 黄山市| 彭州市| 赣州市| 平舆县| 富平县| 木兰县| 洛阳市| 漳浦县| 宁国市| 手游|