關(guān)于Javascript 對(duì)象(object)的prototype
更新時(shí)間:2014年05月09日 09:43:01 作者:
Javascript中的每個(gè)對(duì)象(object)都會(huì)有 prototype,下面為大家介紹下其具體的應(yīng)用
Javascript中的每個(gè)對(duì)象(object)都會(huì)有 prototype 。試一下:
var Richard = new Object();
alert(typeof(Richard.prototype));
結(jié)果令人郁悶,瀏覽器彈出來的是 undefined……
到底是怎么回事呢?
再看一個(gè)例子:
function Richard(){}
alert(typeof(Richard.prototype));
上面的例子似乎說明,只有 function 對(duì)象才有 prototype, 而一般的 Object 對(duì)象是沒有 prototype 的,事實(shí)怎樣呢?
我們?cè)賮韴?zhí)行一句就明白了:
var Richard = new Object();
alert(Richard.__proto__);
是不是明白了?
其實(shí)我們都有一個(gè)誤區(qū),就是認(rèn)為形成 Javascript 對(duì)象的prototype chain 的 prototype 就是一個(gè)名字為 prototype 的屬性,而且是可以訪問的。其實(shí),Javascript 的 prototype 和 名字為 prototype 的屬性在一開始一點(diǎn)兒關(guān)系都沒有,是兩個(gè)不同的事物。
對(duì)于一般對(duì)象來說,我們只能通過 __proto__ 這樣的屬性去訪問從 Object 對(duì)象繼承來的 prototype;
對(duì)于函數(shù)對(duì)象來說,在其建立的時(shí)候,已經(jīng)將 Function對(duì)象的 prototype 賦值給了 prototype 屬性。
復(fù)制代碼 代碼如下:
var Richard = new Object();
alert(typeof(Richard.prototype));
結(jié)果令人郁悶,瀏覽器彈出來的是 undefined……
到底是怎么回事呢?
再看一個(gè)例子:
復(fù)制代碼 代碼如下:
function Richard(){}
alert(typeof(Richard.prototype));
上面的例子似乎說明,只有 function 對(duì)象才有 prototype, 而一般的 Object 對(duì)象是沒有 prototype 的,事實(shí)怎樣呢?
我們?cè)賮韴?zhí)行一句就明白了:
復(fù)制代碼 代碼如下:
var Richard = new Object();
alert(Richard.__proto__);
是不是明白了?
其實(shí)我們都有一個(gè)誤區(qū),就是認(rèn)為形成 Javascript 對(duì)象的prototype chain 的 prototype 就是一個(gè)名字為 prototype 的屬性,而且是可以訪問的。其實(shí),Javascript 的 prototype 和 名字為 prototype 的屬性在一開始一點(diǎn)兒關(guān)系都沒有,是兩個(gè)不同的事物。
對(duì)于一般對(duì)象來說,我們只能通過 __proto__ 這樣的屬性去訪問從 Object 對(duì)象繼承來的 prototype;
對(duì)于函數(shù)對(duì)象來說,在其建立的時(shí)候,已經(jīng)將 Function對(duì)象的 prototype 賦值給了 prototype 屬性。
相關(guān)文章
給頁面渲染時(shí)間加速 干掉Dom Level 0 Event
我們?nèi)サ羰录壎ǖ倪壿?發(fā)現(xiàn)只渲染dom元素,不綁定事件的時(shí)間,僅僅125ms,可見事件綁定的時(shí)間消耗還是很大的 ,尤其是第一種方式,也就是Dom Level 0 Event,最為耗時(shí)2012-12-12微信小程序多文件上傳 Tdesign及導(dǎo)入失敗問題
小程序文件上傳還是有點(diǎn)麻煩的,其實(shí)主要還是小程序?qū)Φ慕涌谟兄T多的不便,比如說,文件不能批量提交,只能一個(gè)個(gè)的提交,小程序的上傳需要專門的接口,這篇文章主要介紹了微信小程序多文件上傳 Tdesign及導(dǎo)入失敗問題,需要的朋友可以參考下2023-11-11js實(shí)現(xiàn)文本框?qū)挾茸赃m應(yīng)文本寬度的方法
這篇文章主要介紹了js實(shí)現(xiàn)文本框?qū)挾茸赃m應(yīng)文本寬度的方法,可實(shí)現(xiàn)根據(jù)文本框內(nèi)容動(dòng)態(tài)改變寬度的功能,涉及javascript動(dòng)態(tài)操作頁面元素屬性的技巧,需要的朋友可以參考下2015-08-08js阻止默認(rèn)瀏覽器行為與冒泡行為的實(shí)現(xiàn)代碼
下面小編就為大家?guī)硪黄猨s阻止默認(rèn)瀏覽器行為與冒泡行為的實(shí)現(xiàn)代碼。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05原生js和jQuery隨意改變div屬性style的名稱和值
用原生js和jQuery實(shí)現(xiàn)改變隨意改變div屬性style的名稱和值的結(jié)果,這個(gè)實(shí)例比較實(shí)用,新手朋友們可以看看2014-10-10javascript 計(jì)算兩個(gè)整數(shù)的百分比值
用來計(jì)算兩個(gè)整數(shù)的百分比值的代碼,需要的可以看看。2009-12-12不用typsescript如何使用類型增強(qiáng)功能
這篇文章主要給大家介紹了關(guān)于不用typsescript如何使用類型增強(qiáng)功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03