JS特權方法定義作用以及與公有方法的區別

來源:互聯網
上載者:User

定義特權方法
在建構函式內部通過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.prototype.myMethod = function() {
console.log(_name); //ReferenceError: _name is not defined
};
s1.myMethod();

小結:特權方法作為建構函式的介面,公有方法可以通過特權方法訪問私人屬性和方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.