电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

如何自己實現(xiàn)JavaScript的new操作符

瀏覽:75日期:2023-09-30 13:54:26
構造函數(shù)

在介紹new之前,必須要知道什么是構造函數(shù)。

構造函數(shù)和普通函數(shù)在寫法上沒有任何區(qū)別,當一個函數(shù)通過new Fun()調用時,就叫做構造函數(shù),構造函數(shù)首字母通常大寫。

function User(name) { this.name = name;}let u = new User(’leo’);

這里,User就是構造函數(shù),當然你也可以直接調用User(),但是這樣就起不到創(chuàng)建實例的作用,在非嚴格模式下,會把name屬性掛在window上。

new 操作符

那么new操作符到底做了什么事情呢,可以創(chuàng)建出一個實例?

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

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

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

3.將步驟1新創(chuàng)建的對象作為**this**的上下文 ;

4.如果該函數(shù)沒有返回對象,則返回**this**。

以上引用自new 操作符 - MDN

可能第 2、4 步大家看的不是很明白,這里我重新總結一下這 4 個步驟:

1.創(chuàng)建一個空對象u = {}

2.綁定原型,u.__proto__ = User.prototype

3.調用User()函數(shù),并把空對象u當做this傳入,即User.call(u)

4.如果User()函數(shù)執(zhí)行完自己return一個object類型,那么返回此變量,否則返回this,注意:如果構造函數(shù)返回基本類型值,則不影響,還是返回this

自己實現(xiàn)一個 new

知道了new操作符的原理,下面我們自己來實現(xiàn)一個FakeNew函數(shù)。

function FakeNew() { let obj = {}; // 將類數(shù)組 arguments 轉為數(shù)組,同時將第一個參數(shù)也就是構造函數(shù) shift 出來 let constructor = [].shift.apply(arguments); // 綁定原型 obj.__proto__ = constructor.prototype; // 調用構造函數(shù),將 obj 當做 this 傳入 let res = Constructor.apply(obj, arguments);// 返回 return typeof res === ’object’ ? res : obj; }function User(name) { this.name = name;}User.prototype.getName = function() { return this.name;}let u = FakeNew(User, ’leo’);console.log(u);console.log(u.getName());

相應關鍵步驟的注釋已經附在代碼里面了,這樣我們就實現(xiàn)了一個new操作,相信大家以后再看到new,會有一種通透的感覺了。

以上就是如何自己實現(xiàn)JavaScript的new操作符的詳細內容,更多關于JavaScript的new操作符的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 学校用栓剂模,玻璃瓶轧盖钳,小型安瓿熔封机,实验室安瓿熔封机-长沙中亚制药设备有限公司 | 找果网 | 苹果手机找回方法,苹果iPhone手机丢了找回,认准找果网! | 华溶溶出仪-Memmert稳定箱-上海协烁仪器科技有限公司 | 地埋式垃圾站厂家【佳星环保】小区压缩垃圾中转站转运站 | 超声波_清洗机_超声波清洗机专业生产厂家-深圳市好顺超声设备有限公司 | 无线联网门锁|校园联网门锁|学校智能门锁|公租房智能门锁|保障房管理系统-KEENZY中科易安 | 闭端端子|弹簧螺式接线头|防水接线头|插线式接线头|端子台|电源线扣+护线套|印刷电路板型端子台|金笔电子代理商-上海拓胜电气有限公司 | 精密五金冲压件_深圳五金冲压厂_钣金加工厂_五金模具加工-诚瑞丰科技股份有限公司 | 2025世界机器人大会_IC China_半导体展_集成电路博览会_智能制造展览网 | 定做大型恒温循环水浴槽-工业用不锈钢恒温水箱-大容量低温恒温水槽-常州精达仪器 | 微信小程序定制,广州app公众号商城网站开发公司-广东锋火 | CE认证_FCC认证_CCC认证_MFI认证_UN38.3认证-微测检测 CNAS实验室 | 防爆正压柜厂家_防爆配电箱_防爆控制箱_防爆空调_-盛通防爆 | 深圳办公室装修-写字楼装修设计-深圳标榜装饰公司 | 杭州中策电线|中策电缆|中策电线|杭州中策电缆|杭州中策电缆永通集团有限公司 | 橡胶膜片,夹布膜片,橡胶隔膜密封,泵阀设备密封膜片-衡水汉丰橡塑科技公司网站 | 超声波焊接机,振动摩擦焊接机,激光塑料焊接机,超声波焊接模具工装-德召尼克(常州)焊接科技有限公司 | 铝合金重力铸造_铝合金翻砂铸造_铝铸件厂家-东莞市铝得旺五金制品有限公司 | 我爱古诗词_古诗词名句赏析学习平台| UV-1800紫外光度计-紫外可见光度计厂家-翱艺仪器(上海)有限公司 | CCE素质教育博览会 | CCE素博会 | 教育展 | 美育展 | 科教展 | 素质教育展 | Q361F全焊接球阀,200X减压稳压阀,ZJHP气动单座调节阀-上海戎钛 | 焦作网 WWW.JZRB.COM| 招商帮-一站式网络营销服务|互联网整合营销|网络推广代运营|信息流推广|招商帮企业招商好帮手|搜索营销推广|短视视频营销推广 | 线材成型机,线材折弯机,线材成型机厂家,贝朗自动化设备有限公司1 | 混合气体腐蚀试验箱_盐雾/硫化氢/气体腐蚀试验箱厂家-北京中科博达 | 上海质量认证办理中心| 石家庄救护车出租_重症转院_跨省跨境医疗转送_活动赛事医疗保障_康复出院_放弃治疗_腾康26年医疗护送转诊团队 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 专业生产动态配料系统_饲料配料系统_化肥配料系统等配料系统-郑州鑫晟重工机械有限公司 | 双齿辊破碎机-大型狼牙破碎机视频-对辊破碎机价格/型号图片-金联机械设备生产厂家 | 交流伺服电机|直流伺服|伺服驱动器|伺服电机-深圳市华科星电气有限公司 | 钢丝绳探伤仪-钢丝绳检测仪-钢丝绳探伤设备-洛阳泰斯特探伤技术有限公司 | 烟雾净化器-滤筒除尘器-防爆除尘器-除尘器厂家-东莞执信环保科技有限公司 | 聚氨酯催化剂K15,延迟催化剂SA-1,叔胺延迟催化剂,DBU,二甲基哌嗪,催化剂TMR-2,-聚氨酯催化剂生产厂家 | 立式_复合式_壁挂式智能化电伴热洗眼器-上海达傲洗眼器生产厂家 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 定时排水阀/排气阀-仪表三通旋塞阀-直角式脉冲电磁阀-永嘉良科阀门有限公司 | 校服厂家,英伦校服定做工厂,园服生产定制厂商-东莞市艾咪天使校服 | 浙江栓钉_焊钉_剪力钉厂家批发_杭州八建五金制造有限公司 | 云南标线|昆明划线|道路标线|交通标线-就选云南云路施工公司-云南云路科技有限公司 | 防水套管|柔性防水套管|伸缩器|伸缩接头|传力接头-河南伟创管道 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 |