web前端入門到實戰:JS中new操作符原始碼實現
首先我們來看一下例項化一個物件做了瀏覽器做了什麼事情
new的四步操作:
1. 建立一個空物件
2. 設定空物件的 proto 屬性繼承建構函式的prototype屬性,也就是繼承建構函式的原型物件上的公有屬性和方法
3. 呼叫建構函式,將建構函式中的this替換為空物件的this,繼承建構函式中的屬性
4. 在函式內部返回一個新物件
web前端開發學習Q-q-u-n: 784783012 ,分享開發工具,零基礎,進階視訊教程,希望新手少走彎路
原始碼實現
function myNew (fun) {
return function () {
// 建立一個新物件且將其隱式原型指向建構函式原型
let obj = {
__proto__ : fun.prototype
}
// 執行建構函式
fun.call(obj, ...arguments)
// 返回該物件
return obj
}
}
function person(name, age) {
this.name = name
this.age = age
}
let obj = myNew(person)(‘chen‘, 18) // {name: "chen", age: 18}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901074/viewspace-2652947/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- web前端入門到實戰:Js代理模式Web前端JS模式
- web前端入門到實戰:好用的Js圖表庫Web前端JS
- web前端入門到實戰:30行前端程式碼實現任意文字轉粒子Web前端
- web前端入門到實戰:css3 實現大轉盤Web前端CSSS3
- web前端入門到實戰:H5-canvas實現粒子時鐘Web前端H5Canvas
- web前端入門到實戰:非同步載入CSS最簡單的實現方式Web前端非同步CSS
- web前端入門到實戰:js擷取字串相關的知識點Web前端JS字串
- web前端入門到實戰:HTML元素巢狀問題Web前端HTML巢狀
- web前端入門到實戰:擼兩個天氣小程式Web前端
- web前端入門到實戰:簡單的圖片輪播Web前端
- web前端入門到實戰:常用網頁元素命名規範Web前端網頁
- 小程式入門到實戰(二)--案例原始碼分享原始碼
- web前端入門到實戰:用css3實現驚豔面試官的背景即背景動畫(高階附原始碼)Web前端CSSS3面試動畫原始碼
- web前端入門到實戰:css騷操作之表單驗證Web前端CSS
- web前端入門到實戰:CSS 層疊上下文(Stacking Context)Web前端CSSContext
- Flutter For Web入門實戰FlutterWeb
- 好程式設計師web前端分享js實現實戰案例程式設計師Web前端JS
- 面試官問:能否模擬實現JS的new操作符面試JS
- web前端入門到實戰:css滑鼠經過彈出子選單特效Web前端CSS特效
- Linux入門到實戰Linux
- Nginx入門到實戰(2)場景實現篇Nginx
- web3從入門到實戰-理論篇Web
- web前端入門到實戰:你真的瞭解CSS繼承嗎?看完必跪Web前端CSS繼承
- web前端入門到實戰:原生js判斷某個元素是否有指定的class名的幾種方法Web前端JS
- 關於模擬 new操作符的實現
- web3從入門到實戰-NFT與代幣Web
- Redis 從入門到實戰Redis
- Gin + GORM 入門到實戰GoORM
- Locust 從入門到實戰
- web前端入門到實戰:css3迴圈,模擬拼多多動畫效果Web前端CSSS3動畫
- Java Agent入門實戰(二)-Instrumentation原始碼概述Java原始碼
- 前端大資料視覺化從入門到實戰前端大資料視覺化
- 前端開發入門到實戰:css實現div垂直水平居中的2種常用方法前端CSS
- Docker從入門到實戰pdfDocker
- Docker實戰-從入門到跑路Docker
- 前端開發入門到實戰:JavaScript字串轉換數字前端JavaScript字串
- 大神實戰Web前端最新版培訓視訊教程 專案實戰+基礎入門 Web前端課程 專案篇Web前端
- Vue.js 原始碼實現Vue.js原始碼