国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

圖文詳解JavaScript的原型對象及原型鏈

2019-11-20 09:19:50
字體:
供稿:網(wǎng)友

對于新人來說,JavaScript的原型是一個很讓人頭疼的事情,一來prototype容易與__proto__混淆,二來它們之間的各種指向?qū)嵲谟行碗s,其實市面上已經(jīng)有非常多的文章在嘗試說清楚,有一張所謂很經(jīng)典的圖,上面畫了各種線條,一會連接這個一會連接那個,說實話我自己看得就非常頭暈,更談不上完全理解了。所以我自己也想嘗試一下,看看能不能把原型中的重要知識點拆分出來,用最簡單的圖表形式說清楚。

我們知道原型是一個對象,其他對象可以通過它實現(xiàn)屬性繼承。但是尼瑪除了prototype,又有一個__proto__是用來干嘛的?長那么像,讓人怎么區(qū)分呢?它們都指向誰,那么混亂怎么記啊?原型鏈又是什么鬼?相信不少初學者甚至有一定經(jīng)驗的老鳥都不一定能完全說清楚,下面用三張簡單的圖,配合一些示例代碼來理解一下。

一、prototype和__proto__的區(qū)別

var a = {};console.log(a.prototype); //undefinedconsole.log(a.__proto__); //Object {}var b = function(){}console.log(b.prototype); //b {}console.log(b.__proto__); //function() {}

/*1、字面量方式*/var a = {};console.log(a.__proto__); //Object {}console.log(a.__proto__ === a.constructor.prototype); //true/*2、構(gòu)造器方式*/var A = function(){};var a = new A();console.log(a.__proto__); //A {}console.log(a.__proto__ === a.constructor.prototype); //true/*3、Object.create()方式*/var a1 = {a:1}var a2 = Object.create(a1);console.log(a2.__proto__); //Object {a: 1}console.log(a.__proto__ === a.constructor.prototype); //false(此處即為圖1中的例外情況)

var A = function(){};var a = new A();console.log(a.__proto__); //A {}(即構(gòu)造器function A 的原型對象)console.log(a.__proto__.__proto__); //Object {}(即構(gòu)造器function Object 的原型對象)console.log(a.__proto__.__proto__.__proto__); //null

以上就是本文的全部內(nèi)容了,本文用三張圖解釋了JavaScript的原型對象與原型鏈,希望對大家學習JavaScript的時候有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 特克斯县| 永宁县| 十堰市| 桐梓县| 河津市| 河间市| 图木舒克市| 南丰县| 三门县| 新晃| 栾川县| 桦川县| 华容县| 肥乡县| 塘沽区| 黑龙江省| 东兰县| 彭山县| 江油市| 北京市| 平阳县| 兴和县| 洛南县| 大连市| 巴里| 盖州市| 独山县| 淮北市| 车致| 南平市| 白河县| 镇康县| 油尖旺区| 明光市| 汤原县| 墨玉县| 茶陵县| 芜湖市| 广德县| 墨竹工卡县| 永丰县|