在javascript中,特權(quán)方法指那些在查看并處理私有變量的同時(shí),允許用戶以公共方法的方式訪問(wèn)的方法。作用:在構(gòu)造函數(shù)外面公開(kāi)訪問(wèn)(僅限于實(shí)例化的對(duì)象),而且還能夠訪問(wèn)私有成員和方法;通過(guò)特權(quán)方法可以控制公有方法對(duì)私有屬性或方法的訪問(wèn)。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
特權(quán)方法:
指那些在查看并處理私有變量的同時(shí),允許用戶以公共方法的方式訪問(wèn)的方法.
要點(diǎn):
1.特權(quán)方法是一個(gè)方法
2.特權(quán)方法可以訪問(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();
【推薦學(xué)習(xí):javascript高級(jí)教程】