日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

JavaScript中實現new的兩種方式引發的探究

瀏覽:28日期:2023-06-03 16:05:03
前言

當你 new 一個構造函數時發生了什么?

“眾所周知”的三步:

創建一個空對象,將它的引用賦給 this,繼承函數的原型;通過 this 將屬性和方法添加至這個對象;最后返回 this 指向的新對象,也就是實例。

一般來說在js中大概是這樣的:

function Mynew(parent,...rest){let obj={};obj.__proto__=parent.prototype;let res=parent.apply(obj,rest);return typeof res=='object'?res:obj;}

上面提到的“空對象”只是簡稱。事實上,就算是定義一個 {} ,它也會從 Object.prototype 上繼承很多方法和屬性。《JavaScript語言精髓與編程實踐》中提出了一個“更加空白的對象”:它有兩種情況 —— Constructor.prototype 值為null;或者Object.getPrototypeOf(obj) 值為null。

但通常我們還能見到另一種寫法:

function Mynew_2(parent,...rest){let child=Object.create(parent.prototype);let result=parent.apply(child,rest);return typeof result=='object'?result:child;}

這兩種實現的不同無疑引起了我的興趣!

Object.create()是怎么實現的?

我們來看一段代碼:

var Best1=function(){this.a=2;}var o1=Object.create(Best1);var o2=Object.create(Best1.prototype);console.log(o1.a); // undefinedconsole.log(o2.a); // undefined

JavaScript中實現new的兩種方式引發的探究

可以看到,以 o1 為例,Object.create() 失去了對原來對象屬性的訪問,而 o2 …同理。

再來看另一段代碼:

var Best=function(){this.a=2;}Best.prototype.a=3;var o1=Object.create(Best);var o2=Object.create(Best.prototype);console.log(o1.a); // undefinedconsole.log(o2.a); // 3

JavaScript中實現new的兩種方式引發的探究

到這里,我似乎明白了什么,又似乎沒明白…

我決定這么做:

let b=new Best();console.log(b);

JavaScript中實現new的兩種方式引發的探究

console.log(Best.prototype);

JavaScript中實現new的兩種方式引發的探究

恍然大悟!

原來我們平時說的 “當讀取實例屬性時,如果找不到,就會查找與對象關聯的原型中的屬性;如果還找不到,就去找原型的原型,直到最頂層(__proto__ 為null)為止” 是指 “一直順著 __proto__ 向上查找”(注意:不經過prototype!)。

那 __proto__ 和 prototype 之間又有什么呢?

console.log(b.__proto__);console.log(Best.prototype);

JavaScript中實現new的兩種方式引發的探究

哦!這就是我們常聽到的“實例的 __proto__ 等于對象的 prototype ”吧。

那現在回過頭來,打印一下 o2 這個對象:

console.log(o2);

JavaScript中實現new的兩種方式引發的探究

你有沒有想到什么?

根據上面所描述的那樣,o2 就是 Best 的實例啊!

所以說,create() 函數實際上返回了一個對象的實例?

但 o1 仍然“不為所動”!

JavaScript中實現new的兩種方式引發的探究

所以我們能否猜測:在 Object.create() 函數中應該是拿到對象的原型并以實例的形式返回:

Object.create=function(o){let F=function(){};F.prototype=o;return new F();}

為什么這里要用函數再 new 的方式?而不是直接用對象去接收?

JavaScript中實現new的兩種方式引發的探究

這和“為什么vue中data是一個函數而不是直接的對象”其實是一個問題:JavaScript中的對象是引用類型,在一個實例中改變某一個元素的值其余實例的值都會發生改變!

而通過create函數則不會:

JavaScript中實現new的兩種方式引發的探究

總結

到此這篇關于JavaScript中實現new的兩種方式的文章就介紹到這了,更多相關JS實現new的方式內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久精品亚洲人成影院| 久久亚洲道色| 免费一区二区视频| 91精品国产自产观看在线| 欧美极品一区二区三区| 国产亚洲一区二区手机在线观看 | 亚洲手机视频| 亚洲人成网站在线在线观看| 麻豆精品一区二区综合av| 精品成人免费一区二区在线播放| 午夜久久影院| 蜜臀va亚洲va欧美va天堂| 国产欧美午夜| 日韩精品1区| 99久久九九| 久热re这里精品视频在线6| 亚洲日本欧美| 国产精品三p一区二区| 精品国产亚洲一区二区三区| 丁香六月综合| 黄色av日韩| 日韩在线视频一区二区三区| 国产精品亚洲成在人线| 国产精品蜜芽在线观看| 精品在线播放| 日韩高清欧美激情| 国产精品国码视频| 黑人精品一区| 国产毛片久久| 日韩动漫一区| 日韩成人a**站| 99在线精品免费视频九九视| 91精品国产一区二区在线观看| 精品中国亚洲| 久久一区二区中文字幕| 亚洲乱亚洲高清| 久久中文字幕一区二区| 精品在线91| 国产伦精品一区二区三区视频| 中文av在线全新| 免费人成网站在线观看欧美高清| 国产精选久久| 久久久一二三| 日本免费新一区视频| 久久久久久一区二区| 国产亚洲在线| 久久久91麻豆精品国产一区| 婷婷亚洲综合| 国产亚洲电影| 999国产精品永久免费视频app| 免费黄网站欧美| 成人国产精品| 中文字幕一区二区精品区| 久久久国产精品网站| 日韩午夜高潮| 老司机精品视频在线播放| 国产字幕视频一区二区| 日韩高清一区二区| 久久久五月天| 国产伦理一区| 日韩一级精品| 成人国产精选| 日韩和欧美的一区| 99久久九九| 美女视频黄免费的久久| 久久夜色精品| 99久久久久| 麻豆国产91在线播放| 久久亚洲欧洲| 神马日本精品| 美女在线视频一区| 国产日产一区| 国产精品普通话对白| 日韩欧美少妇| 色网在线免费观看| 麻豆视频久久| 久久永久免费| 欧美1区2区3| 久久激情综合网| 日韩美女精品| 人人爱人人干婷婷丁香亚洲| 亚洲欧美久久精品| 欧美专区18| 亚洲免费影院| 首页亚洲欧美制服丝腿| 亚洲深夜影院| 欧美精品一卡| 1000部精品久久久久久久久| 日韩在线观看| 日本欧美不卡| 999国产精品视频| 久久理论电影| 欧美91福利在线观看| 亚洲福利一区| 亚洲一区二区三区免费在线观看| 黄色成人在线网址| 乱人伦精品视频在线观看| 国产免费成人| 亚洲精品一区二区在线播放∴| 亚洲专区视频| 日本午夜精品久久久| 日韩av中文字幕一区二区| 久久一二三区| 日韩精品三级| 国产情侣久久| 九九久久国产| 日韩不卡免费高清视频| 久久中文字幕av一区二区不卡| 久久久精品午夜少妇| 国产一区日韩欧美| 国产精品美女久久久浪潮软件| 在线免费观看亚洲| 日韩三级精品| 国产精品va| 国产v日韩v欧美v| 成人精品亚洲| 亚洲深夜影院| 亚洲+小说+欧美+激情+另类| 久久国产视频网| 成人午夜亚洲| 久久国产中文字幕| 西西人体一区二区| 免费视频最近日韩| 国产欧美综合一区二区三区| 国产一区二区三区四区二区 | 久久久久久亚洲精品美女| 色一区二区三区| 久久亚洲电影| 免费观看亚洲天堂| 国产一区亚洲| 亚洲日产国产精品| 美女精品视频在线| 欧美成人午夜| 日韩综合一区二区| 国产成人精品一区二区三区视频 | 欧美日韩一二三四| 免播放器亚洲一区| 国产激情久久| 高清不卡亚洲| 视频一区视频二区中文字幕| 国产精品视频一区二区三区| 92国产精品| 亚洲一区二区小说| 国产成人免费精品| 老鸭窝毛片一区二区三区| 国产精品色婷婷在线观看| 91精品国产91久久久久久黑人| 日韩精品一卡二卡三卡四卡无卡| 国产精品亚洲综合在线观看| 欧洲一级精品| 日韩精品免费观看视频| av中文资源在线资源免费观看| 99re国产精品| 国产精品三p一区二区| 欧美高清一区| 国产欧美日韩视频在线| 久久一区二区三区喷水| 欧美日韩18| 激情婷婷亚洲| 日韩精品1区2区3区| 久久久一本精品| 欧美亚洲一级| 婷婷亚洲综合| 精品成av人一区二区三区| 亚洲一区日韩在线| 日本久久综合| 亚洲乱码久久| 91精品亚洲| 国产日韩一区二区三区在线播放| 欧美日韩色图| 国产精品巨作av| 夜夜精品视频| 中文在线а√天堂| 国产欧美二区| 亚洲一区日韩在线| 日韩电影免费网址| 欧美日韩调教| 久久电影一区| 久久视频一区| 欧美国产免费| 日韩综合一区二区| 黄页网站一区| 国产美女高潮在线| 日本vs亚洲vs韩国一区三区二区| 激情丁香综合| 色综合五月天| 国产精品中文| 亚洲免费资源| 亚洲黄页一区| 精品欧美一区二区三区在线观看| 国产乱人伦丫前精品视频| 老司机久久99久久精品播放免费| 日韩一区欧美| 久久伊人亚洲| 久久国产日韩欧美精品| 日韩精品一级中文字幕精品视频免费观看| www.九色在线| 麻豆国产一区| 国产亚洲欧美日韩精品一区二区三区 | 在线看片日韩|