聊一聊JS中的prototype
什么是prototype:
function定義的對(duì)象有一個(gè)prototype屬性,prototype屬性又指向了一個(gè)prototype對(duì)象,注意prototype屬性與prototype對(duì)象是兩個(gè)不同的東西,要注意區(qū)別。在prototype對(duì)象中又有一個(gè)constructor屬性,這個(gè)constructor屬性同樣指向一個(gè)constructor對(duì)象,而這個(gè)constructor對(duì)象恰恰就是這個(gè)function函數(shù)本身。
//判斷是否是數(shù)組 function isArray(obj) { return Object.prototype.toString.call(obj) === '[object Array]'; }; //判斷是否是function function isFunc(obj) { return Object.prototype.toString.call(obj) === '[object Function]'; } // 是否是json對(duì)象 function isJson(obj) { return typeof (obj) == "object" && (isArray(obj) || Object.prototype.toString.call(obj).toLowerCase() == "[object object]"); }
對(duì)于這個(gè)屬性我的理解就是繼承原型對(duì)象的方法和屬性。屬性和方法是什么?可能一些新人不是很了解,打個(gè)比方,自行車(chē)的屬性有:外表紅色,可變速,可照明等,屬性就是對(duì)象是什么?方法有騎自行車(chē)去上學(xué)等,方法就是對(duì)象能干什么?
那么下面我就從含義到應(yīng)用說(shuō)說(shuō)對(duì)她的理解吧,不足之處還請(qǐng)大牛指點(diǎn)。
prototype是什么含義呢?
javascript中prototype屬性:返回對(duì)象類型原型的引用。
舉個(gè)例子,
A.prototype = new B()
A的prototype是B的一個(gè)實(shí)例,也就是說(shuō)A講B中的方法和屬性都克隆來(lái)了一遍。注意這里是克隆而不是繼承,至于克隆和繼承的區(qū)別,感興趣的同學(xué)可以自己去問(wèn)下度娘。
下面上個(gè)我做的簡(jiǎn)單實(shí)例:
html部分:
<body> <a class="btn btn1">按鈕1</a> <a class="btn btn2">按鈕2</a> <a class="btn btn3">按鈕3</a> </body>
js部分:
(function(){ var btn1 = $(".btn1"); var btn2 = $(".btn2"); var btn3 = $(".btn3"); function baseClass(){ this.showMsg = function(){ alert('11111'); } } function extendClass(){ this.showMsg = function(){ alert('2222'); } } //prototype屬性可以返回對(duì)象類型的原型的引用 //如果構(gòu)造函數(shù)與原型函數(shù)有同名方法,那么優(yōu)先搜索構(gòu)造函數(shù)的方法,不會(huì)再次克隆原型函數(shù)的同名函數(shù) extendClass.prototype = new baseClass(); var initance = new extendClass(); btn1.click(function(){ initance.showMsg(); }); var baseinitance = new baseClass(); btn2.click(function(){ baseinitance.showMsg.call(initance); }) })();
理解以上實(shí)例,基本你可以初步對(duì)js中的prototype屬性有個(gè)大致的認(rèn)識(shí)。
以上所述是小編給大家介紹的JS中的prototype,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
如何在selenium中使用js實(shí)現(xiàn)定位
這篇文章主要介紹了如何在selenium中使用js實(shí)現(xiàn)定位,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08JS實(shí)現(xiàn)調(diào)用本地?cái)z像頭功能示例
這篇文章主要介紹了JS實(shí)現(xiàn)調(diào)用本地?cái)z像頭功能,結(jié)合實(shí)例形式分析了Javascript基于瀏覽器對(duì)本地硬件操作簡(jiǎn)單實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-05-05javascript實(shí)現(xiàn)瀑布流加載圖片原理
這篇文章主要為大家介紹了javascript實(shí)現(xiàn)瀑布流加載圖片效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-02-02js定時(shí)調(diào)用方法成功后并停止調(diào)用示例
這篇文章主要介紹了js定時(shí)調(diào)用方法成功后并停止調(diào)用的實(shí)現(xiàn),需要的朋友可以參考下2014-04-04對(duì)layer彈出框中icon數(shù)字參數(shù)的說(shuō)明介紹
今天小編就為大家分享一篇對(duì)layer彈出框中icon數(shù)字參數(shù)的說(shuō)明介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09JavaScript時(shí)間格式化函數(shù)功能及使用示例
這篇文章主要為大家介紹了JavaScript時(shí)間格式化函數(shù)功能及使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11