其實js是不支援私有變量的。哪怕到es6的class文法。雖然有許多變相的方式。但非常備援而不推崇。
這裡介紹的實際上也不是class文法,而是普通的函數,并且利用IIFE(閉包)的方式來實作私有。
var person = (function(){
var age = 25
return {
name: 'Lee',
getAge: function () {
return age
},
setAge: function () {
age++
}
}
}());
console.log(person.name) // Lee
console.log(person.getAge()) // 25
person.age = 100 // hack try...
console.log(person.getAge()) // 25
function Person(name) {
this.name = name
var age = 18
this.getAge = function () {
return age
}
this.setAge = function () {
age++
}
}
var person = new Person('Lee')
console.log(person.name) // Lee
console.log(person.getAge()) // 18
person.age = 100 // hack try...
Person.age = 100 // hack try...
console.log(person.getAge()) // 18