在javascript中,特權方法指那些在查看并處理私有變量的同時,允許用戶以公共方法的方式訪問的方法。作用:在構造函數(shù)外面公開訪問(僅限于實例化的對象),而且還能夠訪問私有成員和方法;通過特權方法可以控制公有方法對私有屬性或方法的訪問。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
特權方法:
指那些在查看并處理私有變量的同時,允許用戶以公共方法的方式訪問的方法.
要點:
1.特權方法是一個方法
2.特權方法可以訪問私有變量
定義特權方法
在構造函數(shù)內部通過this關鍵字定義的的方法,可以被實例化的對象繼承所調用。
var Student = function(name) { var _name = name; //私有屬性 //特權方法 this.getName = function() { return _name; }; this.setName = function(name) { _name = name; }; }; var s1 = new Student('zhangsan'); s1.getName(); //zhangsan
特權方法的作用
特權方法能夠在構造函數(shù)外面公開訪問(僅限于實例化的對象),而且還能夠訪問私有成員和方法,因此用來做為對象或者構造函數(shù)的接口最合適不過了,通過特權方法我們可以控制公有方法對私有屬性或方法的訪問。 在JS框架的擴展中有很多應用。
特權方法與公有方法的區(qū)別
相同點:
1、 都可以在構造函數(shù)外部公開訪問。
2、都可以訪問公有屬性
不同點:有2點
1、每個實例都要擁有一份特權方法的副本(除在單例中使用外,需要考慮內存),而公有方法為所有實例共享
//創(chuàng)建Student對象實例 var s1 = new Student('zhangsan'); var s2 = new Student('lisi'); //兩實例的特權方法的引用不相同, 說明在對象實例化的時特權方法被重新創(chuàng)建 console.log(s1.getName === s2.getName); //false
2、特權方法可以訪問私有屬性和方法,而公有方法不能。
//為Student創(chuàng)建公有方法 //公有方法不能訪問私有屬性 Student.prototype.myMethod = function() { console.log(_name); //ReferenceError: _name is not defined }; s1.myMethod();
【推薦學習:javascript高級教程】