天天看點

es5 溫故而知新 建立私有成員、私有變量、特權變量的方法

其實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
      

繼續閱讀