衆所周知,javascript沒有私有變量。
在常規的編程範式裏面只有一種約定俗成的方法。用下劃線。
比如
function Book(title) {
this. _title = title; //用下劃線告訴大家這是私有變量。
}
Book.prototype = {
display: () =>{
```
}
```
}
但是這需要所有程序員都是道德高尚,聽話的人。萬一人家就是要粗暴的操作有下劃線的變量,你也只有乾瞪眼。 那麼我們必須找到一種辦法去讓其變成真正的私有變量。
什麼技術可以呢?對了,就是閉包。
那麼再看下面更改過的代碼。
var Book = function(newTitle) {
let title //定義私有變量title, 類外部無法訪問
this.getTitle = () =>{
return title; // 特權方法,通過方法獲得私有變量
}
this.setTitle = (newTitle)=>{
title = newTitle || 'no title specified' // 特權方法,通過方法設置私有變量
}
this.setTitle(newTitle); //特權方法,可以訪問私有變量
}
Book.prototype.display = ()=>{
console.log('display'); //公有方法
}
let b = new Book('ss');
let t = b.getTitle();
console.log(t) //ss
b.setTitle('nn');
let tt = b.getTitle();
console.log(tt) //nn
b.title //沒有輸出
你看現在就沒辦法再獲得私有變量了吧。 對於不聽話的程序員也只能遵守規則了。
下劃線拜拜!
這篇博客講得很清楚,記下了
https://www.cnblogs.com/xiongzaiqiren/p/6733985.html
這篇講單體的文章不錯,記下了
https://www.cnblogs.com/myzhibie/p/4191413.html
這篇文章講接口,寫得好,記下了
https://www.cnblogs.com/hlwyfeng/p/6099957.html