JS原型對象操作實例分析
本文實例講述了JS原型對象操作。分享給大家供大家參考,具體如下:
萬物皆對象,函數(shù)也同樣是對象,是特殊的函數(shù)對象
function fn() {}let a = new fn();let b = new Function()console.log(typeof a); // object console.log(typeof b); // function
打開瀏覽器,輸入fn,會發(fā)現(xiàn)fn有一個prototype(原型)屬性,這個屬性是一個指針,指向原型對象,這個對象包括了特定類型所有共享的屬性和方法。換句話說,prototype對象包含了函數(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的原型屬性上加了兩個屬性和一個方法,實例化后便可以訪問原型中的值。
原型對象有一個constructor屬性,它也是一個指針,它指向原來的函數(shù),也就是說,fn.prototype.constructor == fn。 所有的實例都有這個原型對象,因此實例可以訪問到原型對象中的屬性和方法。那么實例怎么搜索變量或者方法的值呢?首先,函數(shù)實例會在函數(shù)本身上去尋找該變量,如果沒有找到,會在原型對象上尋找變量。
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 = 20console.log(b.a); // 20console.log(a.a); // 18
創(chuàng)建了兩個實例,在b實例上手動添加了一個a屬性,在fn的原型對象上也有一個a屬性,那么對于b實例會優(yōu)先訪問本身的屬性而不是原型上的屬性。
參考內(nèi)容:JavaScript高級程序設計
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。
更多關于JavaScript相關內(nèi)容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調(diào)試技巧總結》、《JavaScript數(shù)據(jù)結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數(shù)學運算用法總結》
希望本文所述對大家JavaScript程序設計有所幫助。
相關文章:
1. 利用promise及參數(shù)解構封裝ajax請求的方法2. Nginx+php配置文件及原理解析3. windows服務器使用IIS時thinkphp搜索中文無效問題4. .NET中l(wèi)ambda表達式合并問題及解決方法5. JSP數(shù)據(jù)交互實現(xiàn)過程解析6. 淺談python出錯時traceback的解讀7. python matplotlib:plt.scatter() 大小和顏色參數(shù)詳解8. Ajax實現(xiàn)表格中信息不刷新頁面進行更新數(shù)據(jù)9. Python importlib動態(tài)導入模塊實現(xiàn)代碼10. ASP 信息提示函數(shù)并作返回或者轉向
