摘要:模擬的運算符的實現原理我們知道,里有一種創建對象的方式是通過顯式的構造函數出來一個實例化對象但是這個運算符是怎么實現的呢先捋一遍運算符的整個流程創建一個新對象它繼承自構造函數的構造函數被執行執行的時候相應的傳參會被傳入,同時綁定上下文如果構
模擬js的new運算符的實現原理
我們知道,js里有一種創建對象的方式是通過顯式的構造函數new出來一個實例化對象
但是 這個new運算符是怎么實現的呢?
先捋一遍new運算符的整個流程: 1: 創建一個新對象 它繼承自構造函數的prototype 2:構造函數被執行 執行的時候 相應的傳參會被傳入,同時綁定上下文(this) 3:如果構造函數返回了一個"對象" 那么這個對象會取代整個new出來的結果。如果構造函數 沒有返回對象,那么new出來的結果為步驟1創建的新對象
![圖片描述][1]
接下來就手動實現一個new運算符:
![圖片描述][2] 可以看到 Funky的實例化對象funkys 已經有了構造函數Funky本身的屬性并且也繼承了Funky原型鏈上的方法 并且 funkys.__proto__ === Funky.prototype 至此,我們已經簡單的實現了new運算的功能 是不是蠻簡單~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/98213.html
摘要:使用指定的參數調用構造函數,并將綁定到新創建的對象。由構造函數返回的對象就是表達式的結果。情況返回以外的基本類型實例中只能訪問到構造函數中的屬性,和情況完全相反,結果相當于沒有返回值。 定義 new 運算符創建一個用戶定義的對象類型的實例或具有構造函數的內置對象的實例。 ——(來自于MDN) 舉個栗子 function Car(color) { this.color = co...
摘要:棧在內存中,棧的特點是只能在同一端進行插入和刪除的操作,即只有和兩種操作。指令的作用是將一個操作數推入棧中。指令的作用是執行兩次操作,彈出兩個操作數和,然后執行,再將結果到棧中。 現在來模擬一下 CPU 執行機器指令的情況,由于匯編代碼和機器指令一一對應,所以我們可以創建一個直接執行匯編代碼的模擬器。在創建模擬器前,先來講解一下相關指令的操作。 棧 在內存中,棧的特點是只能在同一端進行...
摘要:函數可計算某個字符串,并執行其中的的代碼男男成功啦實現了函數參數的傳遞,那么函數返回值怎么處理呢。而且,如果傳入的對象是,又該如何處理所以還需要再做一些工作處理返回值返回返回值男男判斷傳入對象的類型,如果為就指向對象。 本文共 1320 字,讀完只需 5 分鐘 概述 JS 函數 call 和 apply 用來手動改變 this 的指向,call 和 apply 唯一的區別就在于函數...
摘要:過濾掉和簡單判斷是否是迭代器對象模擬行為對迭代器對象進行遍歷操作。看到這里你可能已經知道了,要實現的功能之一就是提供一個迭代器。原文鏈接參考迭代器和生成器系列之模擬實現一個數據結構展開語法循環 前言 es6新增了Set數據結構,它允許你存儲任何類型的唯一值,無論是原始值還是對象引用。這篇文章希望通過模擬實現一個Set來增加對它的理解。 原文鏈接 用在前面 實際工作和學習過程中,你可能也...
閱讀 3640·2023-04-26 02:07
閱讀 3150·2021-09-22 15:55
閱讀 2534·2021-07-26 23:38
閱讀 3119·2019-08-29 15:16
閱讀 2008·2019-08-29 11:16
閱讀 1746·2019-08-29 11:00
閱讀 3583·2019-08-26 18:36
閱讀 3165·2019-08-26 13:32