首頁 > web前端 > js教程 > JS特權方法定義作用以及與公有方法的差異_javascript技巧

JS特權方法定義作用以及與公有方法的差異_javascript技巧

WBOY
發布: 2016-05-16 17:40:20
原創
1325 人瀏覽過
定義特權方法
在建構子內部透過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

特權方法的作用

特權方法能夠在構造函數外面公開訪問(僅限於實例化的對象),而且還能夠訪問私有成員和方法,因此用來做為對像或者構造函數的介面最適合不過了,透過特權方法我們可以控制公有方法對私有屬性或方法的存取。 在JS框架的擴展中有很多應用。 特權方法與公有方法的差異

相同點:1. 都可以在建構子外部公開存取。 2. 都可以存取公有屬性
不同點:有2點
1. 每個實例都要擁有一份特權方法的副本(除在單例中使用外,需要考慮內存),而公有方法所有實例共用 程式碼如下:


//建立Student程式>var s1 = new Student('zhangsan');
var s2 = new Student('lisi');
//兩個實例的特權方法的引用不相同, 說明在物件實例化的時特權方法被重新建立
console.log(s1.getName === s2.getName); //false

2. 特權方法可以存取私有屬性和方法,而公有方法不能。
複製程式碼 程式碼如下:

//為Student建立公有方法


//為Student建立公有方法
/Student.prototype.myMethod = function() {
console.log(_name); //ReferenceError: _name is not defined
};
s1.myMethod() ; 小結:特權方法作為構造函數的接口,公有方法可以透過特權方法存取私有屬性和方法
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板