關(guān)于Javascript 對象(object)的prototype
更新時間:2014年05月09日 09:43:01 作者:
Javascript中的每個對象(object)都會有 prototype,下面為大家介紹下其具體的應(yīng)用
Javascript中的每個對象(object)都會有 prototype 。試一下:
var Richard = new Object();
alert(typeof(Richard.prototype));
結(jié)果令人郁悶,瀏覽器彈出來的是 undefined……
到底是怎么回事呢?
再看一個例子:
function Richard(){}
alert(typeof(Richard.prototype));
上面的例子似乎說明,只有 function 對象才有 prototype, 而一般的 Object 對象是沒有 prototype 的,事實怎樣呢?
我們再來執(zhí)行一句就明白了:
var Richard = new Object();
alert(Richard.__proto__);
是不是明白了?
其實我們都有一個誤區(qū),就是認為形成 Javascript 對象的prototype chain 的 prototype 就是一個名字為 prototype 的屬性,而且是可以訪問的。其實,Javascript 的 prototype 和 名字為 prototype 的屬性在一開始一點兒關(guān)系都沒有,是兩個不同的事物。
對于一般對象來說,我們只能通過 __proto__ 這樣的屬性去訪問從 Object 對象繼承來的 prototype;
對于函數(shù)對象來說,在其建立的時候,已經(jīng)將 Function對象的 prototype 賦值給了 prototype 屬性。
復(fù)制代碼 代碼如下:
var Richard = new Object();
alert(typeof(Richard.prototype));
結(jié)果令人郁悶,瀏覽器彈出來的是 undefined……
到底是怎么回事呢?
再看一個例子:
復(fù)制代碼 代碼如下:
function Richard(){}
alert(typeof(Richard.prototype));
上面的例子似乎說明,只有 function 對象才有 prototype, 而一般的 Object 對象是沒有 prototype 的,事實怎樣呢?
我們再來執(zhí)行一句就明白了:
復(fù)制代碼 代碼如下:
var Richard = new Object();
alert(Richard.__proto__);
是不是明白了?
其實我們都有一個誤區(qū),就是認為形成 Javascript 對象的prototype chain 的 prototype 就是一個名字為 prototype 的屬性,而且是可以訪問的。其實,Javascript 的 prototype 和 名字為 prototype 的屬性在一開始一點兒關(guān)系都沒有,是兩個不同的事物。
對于一般對象來說,我們只能通過 __proto__ 這樣的屬性去訪問從 Object 對象繼承來的 prototype;
對于函數(shù)對象來說,在其建立的時候,已經(jīng)將 Function對象的 prototype 賦值給了 prototype 屬性。
相關(guān)文章
基于Bootstrap模態(tài)對話框只加載一次 remote 數(shù)據(jù)的解決方法
下面小編就為大家?guī)硪黄贐ootstrap模態(tài)對話框只加載一次 remote 數(shù)據(jù)的解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
用JS實現(xiàn)根據(jù)當(dāng)前時間隨機生成流水號或者訂單號
本文通過實例代碼給大家介紹了基于JS實現(xiàn)根據(jù)當(dāng)前時間隨機生成流水號或者訂單號的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧2018-05-05
JavaScript實現(xiàn)通過滑塊改變網(wǎng)頁顏色
這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)通過滑塊改變網(wǎng)頁顏色,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08
下拉菜單點擊實現(xiàn)連接跳轉(zhuǎn)功能的js代碼
下拉菜單點擊實現(xiàn)連接跳轉(zhuǎn)效果想必不是很常見吧,下面與大家分享下具體的實現(xiàn)另有實例,感興趣的朋友可以參考下哈2013-05-05

