JS原型對(duì)象操作實(shí)例分析
本文實(shí)例講述了JS原型對(duì)象操作。分享給大家供大家參考,具體如下:
萬(wàn)物皆對(duì)象,函數(shù)也同樣是對(duì)象,是特殊的函數(shù)對(duì)象
function fn() {}
let a = new fn();
let b = new Function()
console.log(typeof a); // object
console.log(typeof b); // function
打開(kāi)瀏覽器,輸入fn,會(huì)發(fā)現(xiàn)fn有一個(gè)prototype(原型)屬性,這個(gè)屬性是一個(gè)指針,指向原型對(duì)象,這個(gè)對(duì)象包括了特定類型所有共享的屬性和方法。
換句話說(shuō),prototype對(duì)象包含了函數(shù)所有的共享屬性和方法。
function fn() {}
fn.prototype.a = 18;
fn.prototype.b = "b";
fn.prototype.test = function() {
console.log(123);
}
var r = new fn();
console.log(r.a); // 18
我們直接在函數(shù)fn的原型屬性上加了兩個(gè)屬性和一個(gè)方法,實(shí)例化后便可以訪問(wèn)原型中的值。
- 原型對(duì)象有一個(gè)constructor屬性,它也是一個(gè)指針,它指向原來(lái)的函數(shù),也就是說(shuō),fn.prototype.constructor == fn。
- 所有的實(shí)例都有這個(gè)原型對(duì)象,因此實(shí)例可以訪問(wèn)到原型對(duì)象中的屬性和方法。

那么實(shí)例怎么搜索變量或者方法的值呢?首先,函數(shù)實(shí)例會(huì)在函數(shù)本身上去尋找該變量,如果沒(méi)有找到,會(huì)在原型對(duì)象上尋找變量。
function fn() {}
fn.prototype.a = 18;
fn.prototype.b = "b";
fn.prototype.test = function() {
console.log(123);
}
var a = new fn();
var b = new fn();
b.a = 20
console.log(b.a); // 20
console.log(a.a); // 18
創(chuàng)建了兩個(gè)實(shí)例,在b實(shí)例上手動(dòng)添加了一個(gè)a屬性,在fn的原型對(duì)象上也有一個(gè)a屬性,那么對(duì)于b實(shí)例會(huì)優(yōu)先訪問(wèn)本身的屬性而不是原型上的屬性。
參考內(nèi)容:JavaScript高級(jí)程序設(shè)計(jì)
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T(mén)教程》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
JavaScript 上萬(wàn)關(guān)鍵字瞬間匹配實(shí)現(xiàn)代碼
發(fā)一篇之前寫(xiě)的文章,平時(shí)還是經(jīng)常用到的,尤其是河蟹詞特別多的聊天系統(tǒng)里2013-07-07
JavaScript 就地編輯HTML節(jié)點(diǎn)實(shí)現(xiàn)代碼
JavaScript 就地編輯HTML節(jié)點(diǎn)實(shí)現(xiàn)代碼2009-07-07
淺談Webpack多頁(yè)應(yīng)用HMR卡住問(wèn)題
這篇文章主要介紹了淺談Webpack多頁(yè)應(yīng)用HMR卡住問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04
JavaScript 事件監(jiān)聽(tīng)實(shí)例代碼[兼容IE,firefox] 含注釋
JavaScript事件監(jiān)聽(tīng)完整實(shí)例 含注釋,非常的不錯(cuò),大家可以直接使用。2009-08-08
基于javascript實(shí)現(xiàn)碰撞檢測(cè)
這篇文章主要為大家詳細(xì)介紹了基于javascript實(shí)現(xiàn)碰撞檢測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03
利用JavaScript編寫(xiě)Python內(nèi)置函數(shù)查詢工具
Python有豐富的內(nèi)置函數(shù)實(shí)現(xiàn)各種功能,但查詢內(nèi)置函數(shù)時(shí)總是需要百度查,有沒(méi)有一個(gè)小工具可以單機(jī)無(wú)網(wǎng)絡(luò)查詢Python內(nèi)置函數(shù),方便自己學(xué)習(xí)編寫(xiě)Python程序呢?本文就來(lái)用JavaScript編寫(xiě)一個(gè)2023-02-02
使用Three.js實(shí)現(xiàn)太陽(yáng)系八大行星的自轉(zhuǎn)公轉(zhuǎn)示例代碼
這篇文章主要給大家介紹了關(guān)于如何使用Three.js實(shí)現(xiàn)太陽(yáng)系八大行星的自轉(zhuǎn)公轉(zhuǎn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Three.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04

