js中使用使用原型(prototype)定義方法的好處詳解
經(jīng)常在前端面試或是和其他同行溝通是,在談到構(gòu)造在JS定義構(gòu)造函數(shù)的方法是最好使用原型的方式:將方法定義到構(gòu)造方法的prototype上,這樣的好處是,通過該構(gòu)造函數(shù)生成的實(shí)例所擁有的方法都是指向一個(gè)函數(shù)的索引,這樣可以節(jié)省內(nèi)存。
當(dāng)然,這種說法沒有任何問題,只是在實(shí)現(xiàn)上,并非只有使用prototype的方式才能達(dá)到這樣的效果,我們可以將方法以函數(shù)的形式定義在構(gòu)造函數(shù)之外,然后在構(gòu)造函數(shù)中通過this.method = method的方式,這樣生成的實(shí)例的方法也都通過索引指向一個(gè)函數(shù),具體如下:
// 不使用原型定義方法: (function() { function Constractor() { this.method1 = method1; this.method2 = method2; } function method1() { } function method2() { } })();
一般使用原型定義時(shí)代碼如下:
(function () { function Constractor() { } Constactor.prototype = { method1: function() { }, method2: function() { } }; // 或者 Constactor.prototype.method1 = function() { }; Constactor.prototype.method2 = function() { }; })();
理論和實(shí)現(xiàn)都沒有什么高深的,只是為了達(dá)到同樣的目的,可以通過不同的途徑,只是此種方式在使用instanceOf運(yùn)算符來判斷繼承關(guān)系時(shí)就不奏效了。
以上這篇js中使用使用原型(prototype)定義方法的好處詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- javascript prototype的深度探索不是原型繼承那么簡單
- JavaScript為對(duì)象原型prototype添加屬性的兩種方式
- javascript prototype原型詳解(比較基礎(chǔ))
- javascript prototype 原型鏈
- JS構(gòu)造函數(shù)與原型prototype的區(qū)別介紹
- 跟我學(xué)習(xí)javascript的prototype原型和原型鏈
- javascript prototype原型操作筆記
- js使用原型對(duì)象(prototype)需要注意的地方
- 淺談js構(gòu)造函數(shù)的方法與原型prototype
- [js高手之路]圖解javascript的原型(prototype)對(duì)象,原型鏈實(shí)例
- Javascript 原型和繼承(Prototypes and Inheritance)
- JS原型prototype和__proto__用法實(shí)例分析
相關(guān)文章
JavaScript創(chuàng)建對(duì)象的幾種方式及關(guān)于this指向問題
這篇文章主要介紹了JavaScript創(chuàng)建對(duì)象的幾種方式及關(guān)于this指向問題,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值。需要的小伙伴可以參考一下2022-07-07JS運(yùn)動(dòng)特效之鏈?zhǔn)竭\(yùn)動(dòng)分析
這篇文章主要介紹了JS運(yùn)動(dòng)特效之鏈?zhǔn)竭\(yùn)動(dòng),結(jié)合實(shí)例形式分析了javascript鏈?zhǔn)竭\(yùn)動(dòng)的原理與具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-01-01JavaScript算法實(shí)例之求二叉樹從根到葉的所有路徑和
如果你希望求某一特定路徑(例如從根到葉子)上數(shù)字的和,那么問題就轉(zhuǎn)變?yōu)榱恕扒蠖鏄鋸母饺~的所有路徑和”,所以本文給大家介紹了如何使用JavaScript求二叉樹從根到葉的所有路徑和,需要的朋友可以參考下2023-10-10通過百度地圖獲取公交線路的站點(diǎn)坐標(biāo)的js代碼
通過百度地圖獲取公交線路的站點(diǎn)坐標(biāo)的js代碼,需要的朋友可以參考下2012-05-05基于JavaScript實(shí)現(xiàn)移動(dòng)端無限加載分頁
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)移動(dòng)端無限加載分頁,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03解決bootstrap導(dǎo)航欄navbar在IE8上存在缺陷的方法
這篇文章主要為大家詳細(xì)介紹了解決bootstrap導(dǎo)航欄navbar在IE8上存在缺陷的方法,需要的朋友可以參考下2016-07-07原生js實(shí)現(xiàn)類似彈窗抖動(dòng)效果
這篇文章主要介紹了原生js實(shí)現(xiàn)類似彈窗抖動(dòng)效果的相關(guān)資料,推薦給大家,需要的朋友可以參考下2015-04-04