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

