亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

深入淺析JavaScript中prototype和proto的關系

2019-11-20 11:16:27
字體:
來源:轉載
供稿:網友

prototype,每一個函數對象都有一個顯示的prototype屬性,它代表了對象的原型(Function.prototype函數對象是個例外,沒有prototype屬性)。

__proto__:每個對象都有一個名為__proto__的內部隱藏屬性,指向于它所對應的原型對象(chrome、firefox中名稱為__proto__,并且可以被訪問到)。原型鏈正是基于__proto__才得以形成

(note:不是基于函數對象的屬性prototype)。

簡單的說:__proto__是內部原型,prototype是構造器原型(構造器其實就是函數)

構造器的原型(prototype)是一個對象

那什么是構造器呢?

要想創建一個對象,首先要有一個對象構造器,就像php里面一樣,要想創建一個對象,首先要有一個類
構造器的實質就是一個函數,下面的問題是:如何通過這個構造器來創建一個對象呢?

答案: new

構造器構造的是對象。

一、所有構造器/函數的__proto__都指向Function.prototype,它是一個空函數(Empty function)

Number.__proto__ === Function.prototype 
// true
Boolean.__proto__ === Function.prototype
// true
String.__proto__ === Function.prototype 
// true
Object.__proto__ === Function.prototype 
// true
Function.__proto__ === Function.prototype
// true
Array.__proto__ ===
Function.prototype  
// true
RegExp.__proto__ === Function.prototype 
// true
Error.__proto__ ===
Function.prototype  
// true
Date.__proto__ ===
Function.prototype   
// true

說明了Number等都是構造器,這些構造器其實是Function的一個對象。 也就是說相當于 var Number = new Function();

JavaScript中有內置(build-in)構造器/對象共計12個(ES5中新加了JSON),這里列舉了可訪問的8個構造器。剩下如Global不能直接訪問,Arguments僅在函數調用時由JS引擎創建,Math,JSON是以對象形式存在的,無需new。它們的__proto__是Object.prototype。如下

Math.__proto__ === Object.prototype 
// true
JSON.__proto__ === Object.prototype 
// true

上面說的“所有構造器/函數”當然包括自定義的。如下

// 函數聲明
function Person()
{}
// 函數表達式
var Man
=
function()
{}
console.log(Person.__proto__ === Function.prototype)
// true
console.log(Man.__proto__ ===
Function.prototype)   
// true

這說明什么呢?

所有的構造器都來自于Function.prototype,甚至包括根構造器Object及Function自身。所有構造器都繼承了Function.prototype的屬性及方法。如length、call、apply、bind(ES5)。

Function.prototype也是唯一一個typeof XXX.prototype為 “function”的prototype。其它的構造器的prototype都是一個對象。如下

console.log(typeof Function.prototype)
// function
console.log(typeof Object.prototype)  
// object
console.log(typeof Number.prototype)  
// object
console.log(typeof Boolean.prototype) 
// object
console.log(typeof String.prototype)  
// object
console.log(typeof Array.prototype)   
// object
console.log(typeof RegExp.prototype)  
// object
console.log(typeof Error.prototype)   
// object
console.log(typeof Date.prototype)    
// object
console.log(typeof Object.prototype)  
// object

噢,上面還提到它是一個空的函數,alert(Function.prototype) 下看看。

知道了所有構造器(含內置及自定義)的__proto__都是Function.prototype,那Function.prototype的__proto__是誰呢?

相信都聽說過JavaScript中函數也是一等公民,那從哪能體現呢?如下

console.log(Function.prototype.__proto__ ===
Object.prototype)
// true

這說明所有的構造器也都是一個普通JS對象,可以給構造器添加/刪除屬性等。同時它也繼承了Object.prototype上的所有方法:toString、valueOf、hasOwnProperty等。

最后Object.prototype的__proto__是誰?

Object.prototype.__proto__ ===
null  //
true

下面給大家分享一個Function、Object、Prototype、__proto__內存關系圖

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品欧美日韩专区| 国产精品99蜜臀久久不卡二区| 中日韩美女免费视频网址在线观看| 亚洲美女精品久久| 国产视频在线观看一区二区| 国内精品久久久久伊人av| 亚洲一区二区在线| 91亚洲国产精品| 欧美成人精品三级在线观看| 92福利视频午夜1000合集在线观看| 国产不卡av在线免费观看| 久久久999精品视频| 91精品久久久久久久久久久久久| 一区三区二区视频| 国语自产精品视频在线看| 亚洲精品中文字幕有码专区| 欧美亚洲激情视频| 中文字幕精品av| 成人免费福利视频| 狠狠色狠狠色综合日日小说| 色系列之999| 日韩av片永久免费网站| 亚洲成人av资源网| 日韩国产欧美区| 久久精品久久久久久国产 免费| 亚洲另类图片色| 97碰碰碰免费色视频| 日本三级韩国三级久久| 国产精品一区二区av影院萌芽| 91在线高清视频| 成人免费网站在线观看| 亚洲综合大片69999| 91日本在线视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产精品久久久久久久久久东京| 精品久久在线播放| 三级精品视频久久久久| 久久精品视频播放| 国产成人精品免费视频| 久久精品电影网站| 欧美另类精品xxxx孕妇| 88xx成人精品| 亚洲美女在线看| 国产一区二区三区中文| 日韩中文字幕在线观看| 高清欧美性猛交| 成人在线一区二区| 亚洲精品第一国产综合精品| 国内精品久久久久影院 日本资源| 国产suv精品一区二区三区88区| 国产丝袜精品视频| 国模极品一区二区三区| 欧美一级黑人aaaaaaa做受| 国产精品一区二区久久久| 性色av香蕉一区二区| 亚洲美女在线看| 欧洲亚洲免费在线| 国产日本欧美视频| 欧美国产日韩中文字幕在线| 91深夜福利视频| 亚洲男人天堂2023| 日韩天堂在线视频| 亚洲欧洲日本专区| 国产成人一区二区在线| 成人激情视频在线播放| 高清亚洲成在人网站天堂| 欧美最猛性xxxxx亚洲精品| 国产欧美在线看| 欧美精品在线第一页| 黄色一区二区在线观看| 欧美激情视频三区| 国产亚洲一区二区在线| 91免费在线视频| 日韩成人av在线播放| 日本伊人精品一区二区三区介绍| 欧美一二三视频| 亚洲国产精品一区二区三区| 国产ts人妖一区二区三区| 久久久久999| 大伊人狠狠躁夜夜躁av一区| 黄色一区二区三区| 亚洲欧美视频在线| 国产精品91久久久久久| 精品一区电影国产| 日产精品久久久一区二区福利| 日韩欧美国产一区二区| 国产精品mp4| 欧美日韩国产第一页| 91精品国产乱码久久久久久蜜臀| 欧美激情视频播放| 欧美体内谢she精2性欧美| 色综合视频一区中文字幕| 中文字幕免费国产精品| 欧美黑人国产人伦爽爽爽| 亚洲欧美精品一区| 一区二区在线视频播放| 精品国产31久久久久久| 精品国产一区二区三区四区在线观看| 欧美极品美女电影一区| 在线精品高清中文字幕| 国产精品国产三级国产aⅴ9色| 成人深夜直播免费观看| 亚洲欧美制服丝袜| 日韩中文字幕在线视频| 成年无码av片在线| 久久精品国产久精国产思思| 欧美一级淫片videoshd| 久久男人的天堂| 亚洲欧美日韩成人| 国产精品久久一区主播| 91国内在线视频| 欧洲美女7788成人免费视频| 欧美精品午夜视频| 亚洲国产另类久久精品| 亚洲成人1234| 国内伊人久久久久久网站视频| 久久亚洲国产精品成人av秋霞| 日韩女优人人人人射在线视频| 久久国产精品影片| 亚洲国产成人在线播放| 亚洲精品第一国产综合精品| 欧美日韩免费在线观看| 精品伊人久久97| 国产日韩在线播放| 亚洲第五色综合网| 91探花福利精品国产自产在线| 国产精品99久久久久久白浆小说| 久久成人人人人精品欧| 色先锋久久影院av| 亚洲一区二区中文| 亚洲第一视频网站| 欧美在线一区二区视频| 精品久久久国产| 视频在线一区二区| 欧美一级淫片播放口| 欧美激情国产高清| 欧美日韩国产激情| 午夜精品福利视频| 国产成人精品在线| 国产精品老牛影院在线观看| 久久99久久99精品免观看粉嫩| 久久精品国产清自在天天线| 国产精品扒开腿做| 欧美一级视频免费在线观看| 久久香蕉精品香蕉| 一区二区三区黄色| 亚洲最大福利视频网站| 日韩中文娱乐网| 免费99精品国产自在在线| 欧美日韩福利视频| 亚洲国产欧美在线成人app| 亚洲第一黄色网| 日韩中文字幕免费看| 全球成人中文在线| 国产精品96久久久久久又黄又硬| 日产日韩在线亚洲欧美| 日韩在线观看免费av| 清纯唯美日韩制服另类| 久久视频精品在线| 色婷婷成人综合| 亚洲色图18p| 日韩精品极品在线观看播放免费视频| 亚洲性无码av在线| 91大神福利视频在线|