JS特權(quán)方法定義作用以及與公有方法的區(qū)別
更新時(shí)間:2013年03月18日 14:18:03 作者:
在構(gòu)造函數(shù)內(nèi)部通過(guò)this關(guān)鍵字定義的的方法為特權(quán)方法它的作用為在構(gòu)造函數(shù)外面公開(kāi)訪問(wèn)(僅限于實(shí)例化的對(duì)象),而且還能夠訪問(wèn)私有成員和方法,感興趣的你可以參考下哈
定義特權(quán)方法
在構(gòu)造函數(shù)內(nèi)部通過(guò)this關(guān)鍵字定義的的方法,可以被實(shí)例化的對(duì)象繼承所調(diào)用。
var Student = function(name) {
var _name = name; //私有屬性
//特權(quán)方法
this.getName = function() {
return _name;
};
this.setName = function(name) {
_name = name;
};
};
var s1 = new Student('zhangsan');
s1.getName(); //zhangsan
特權(quán)方法的作用
特權(quán)方法能夠在構(gòu)造函數(shù)外面公開(kāi)訪問(wèn)(僅限于實(shí)例化的對(duì)象),而且還能夠訪問(wèn)私有成員和方法,因此用來(lái)做為對(duì)象或者構(gòu)造函數(shù)的接口最合適不過(guò)了,通過(guò)特權(quán)方法我們可以控制公有方法對(duì)私有屬性或方法的訪問(wèn)。 在JS框架的擴(kuò)展中有很多應(yīng)用。
特權(quán)方法與公有方法的區(qū)別
相同點(diǎn):1. 都可以在構(gòu)造函數(shù)外部公開(kāi)訪問(wèn)。2. 都可以訪問(wèn)公有屬性
不同點(diǎn):有2點(diǎn)
1. 每個(gè)實(shí)例都要擁有一份特權(quán)方法的副本(除在單例中使用外,需要考慮內(nèi)存),而公有方法為所有實(shí)例共享
//創(chuàng)建Student對(duì)象實(shí)例
var s1 = new Student('zhangsan');
var s2 = new Student('lisi');
//兩實(shí)例的特權(quán)方法的引用不相同, 說(shuō)明在對(duì)象實(shí)例化的時(shí)特權(quán)方法被重新創(chuàng)建
console.log(s1.getName === s2.getName); //false
2. 特權(quán)方法可以訪問(wèn)私有屬性和方法,而公有方法不能。
//為Student創(chuàng)建公有方法
//公有方法不能訪問(wèn)私有屬性
Student.prototype.myMethod = function() {
console.log(_name); //ReferenceError: _name is not defined
};
s1.myMethod();
小結(jié):特權(quán)方法作為構(gòu)造函數(shù)的接口,公有方法可以通過(guò)特權(quán)方法訪問(wèn)私有屬性和方法
在構(gòu)造函數(shù)內(nèi)部通過(guò)this關(guān)鍵字定義的的方法,可以被實(shí)例化的對(duì)象繼承所調(diào)用。
復(fù)制代碼 代碼如下:
var Student = function(name) {
var _name = name; //私有屬性
//特權(quán)方法
this.getName = function() {
return _name;
};
this.setName = function(name) {
_name = name;
};
};
var s1 = new Student('zhangsan');
s1.getName(); //zhangsan
特權(quán)方法的作用
特權(quán)方法能夠在構(gòu)造函數(shù)外面公開(kāi)訪問(wèn)(僅限于實(shí)例化的對(duì)象),而且還能夠訪問(wèn)私有成員和方法,因此用來(lái)做為對(duì)象或者構(gòu)造函數(shù)的接口最合適不過(guò)了,通過(guò)特權(quán)方法我們可以控制公有方法對(duì)私有屬性或方法的訪問(wèn)。 在JS框架的擴(kuò)展中有很多應(yīng)用。
特權(quán)方法與公有方法的區(qū)別
相同點(diǎn):1. 都可以在構(gòu)造函數(shù)外部公開(kāi)訪問(wèn)。2. 都可以訪問(wèn)公有屬性
不同點(diǎn):有2點(diǎn)
1. 每個(gè)實(shí)例都要擁有一份特權(quán)方法的副本(除在單例中使用外,需要考慮內(nèi)存),而公有方法為所有實(shí)例共享
復(fù)制代碼 代碼如下:
//創(chuàng)建Student對(duì)象實(shí)例
var s1 = new Student('zhangsan');
var s2 = new Student('lisi');
//兩實(shí)例的特權(quán)方法的引用不相同, 說(shuō)明在對(duì)象實(shí)例化的時(shí)特權(quán)方法被重新創(chuàng)建
console.log(s1.getName === s2.getName); //false
2. 特權(quán)方法可以訪問(wèn)私有屬性和方法,而公有方法不能。
復(fù)制代碼 代碼如下:
//為Student創(chuàng)建公有方法
//公有方法不能訪問(wèn)私有屬性
Student.prototype.myMethod = function() {
console.log(_name); //ReferenceError: _name is not defined
};
s1.myMethod();
小結(jié):特權(quán)方法作為構(gòu)造函數(shù)的接口,公有方法可以通過(guò)特權(quán)方法訪問(wèn)私有屬性和方法
相關(guān)文章
微信小程序textarea層級(jí)過(guò)高(蓋住其他元素)問(wèn)題的解決辦法
這篇文章主要給大家介紹了關(guān)于微信小程序textarea層級(jí)過(guò)高(蓋住其他元素)問(wèn)題的解決辦法,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
JS操作字符串轉(zhuǎn)換為數(shù)值并取整的代碼
這篇文章主要介紹了JS操作字符串轉(zhuǎn)換為數(shù)值并取整的代碼,代碼比較短,需要的朋友可以參考下2014-01-01
在多個(gè)頁(yè)面使用同一個(gè)HTML片段的代碼
有一個(gè)比較復(fù)雜的HTML片段(A),如果把這個(gè)HTML片段嵌入到其他頁(yè)面中(B,C,D....)。 問(wèn)題的關(guān)鍵是在HTML片段中有大量的JavaScript邏輯需要處理,比如說(shuō)分頁(yè),點(diǎn)擊事件響應(yīng)等。2011-03-03
Bootstrap項(xiàng)目實(shí)戰(zhàn)之首頁(yè)內(nèi)容介紹(全)
本文分為兩部分介紹Bootstrap首頁(yè)內(nèi)容介紹的實(shí)現(xiàn)代碼,感興趣的小伙伴們可以參考一下2016-04-04
JavaScript中undefined和is?not?defined的區(qū)別與異常處理
這篇文章主要給大家介紹了關(guān)于JavaScript中undefined和is?not?defined的區(qū)別與異常處理的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-03-03
微信小程序調(diào)用攝像頭實(shí)現(xiàn)拍照功能
這篇文章主要為大家詳細(xì)介紹了微信小程序調(diào)用攝像頭實(shí)現(xiàn)拍照功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
javascript中關(guān)于執(zhí)行環(huán)境的雜談
如你所知,javascript里執(zhí)行環(huán)境是作為一個(gè)最核心的概念存在的。相信廣大FE筒子們對(duì)于這個(gè)概念不會(huì)陌生,它定義了變量或函數(shù)有權(quán)訪問(wèn)其他數(shù)據(jù)范圍以及其行為。2011-08-08
JavaScript實(shí)現(xiàn)設(shè)計(jì)模式中的單例模式的一些技巧總結(jié)
單例模式是JavaScript項(xiàng)目中最常用的設(shè)計(jì)模式之一,下面羅列了JavaScript實(shí)現(xiàn)設(shè)計(jì)模式中的單例模式的一些技巧總結(jié),包括惰性加載與分支技術(shù)等,需要的朋友可以參考下.2016-05-05

