众所周知,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