js中沒有私有變量(對比java),所以js想實現類似的私有變量,只能通過類似的_[attrName](給變量名加上下滑線),然後編寫get和set方法,(python 實現類似,不過在解析器裏會在給變量名添加自定義的名稱
var a = {
_name:"張三",
get name(){
return this._name;
},
set name(val) {
this._name = val;
}
name: {
get: function(){
return this._name
},
set: function(name){
this._name = name
}
}
}
a.name
張三
a.name = '李四'
李四
get和set的函數其實是屬於對象的屬性,屬性名就是函數名,所以如果_name 寫成 name,會報
VM8231:3 Uncaught RangeError: Maximum call stack size exceeded