国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 阳江市| 三原县| 甘洛县| 洛浦县| 鹤峰县| 肇源县| 东莞市| 扎兰屯市| 巢湖市| 虞城县| 奉化市| 恩施市| 清徐县| 溧阳市| 柳林县| 洛宁县| 东山县| 鄯善县| 阿勒泰市| 广饶县| 长治市| 奎屯市| 黄石市| 赤城县| 光山县| 佳木斯市| 修武县| 开远市| 元谋县| 鲁甸县| 通州市| 鞍山市| 扬州市| 安吉县| 苍山县| 乌拉特后旗| 青州市| 陆丰市| 玉田县| 辛集市| 松原市|