[英]why 'this._obj['a']=2' for setter doesn't work in Dart Class
class Point {
var obj ={};
get _obj => obj;
set _obj(v){
print('active!$v');
obj=v;
}
setObj(){
this._obj={'a':1}; // it's work print active!{a: 1};
this._obj['a']=2; // it does't work no print ; why>?
}
}
void main() {
Point().setObj();
}
他為什么不工作? 我猜 Dart 與 Class 原型的 Js 不同。
使用此代碼時:
this._obj={'a':1};
您正在調用自定義設置器:
set _obj(v){
print('active!$v');
obj=v;
}
但是在使用以下方法時:
this._obj['a']=2;
您正在訪問地圖。 它沒有您對print('active!$v')
行的自定義實現。
您可以在飛鏢墊中嘗試以下代碼以查看值是如何更新的。:
class Point {
var obj ={};
get _obj => obj;
set _obj(v){
print('active!$v');
obj=v;
}
setObj(){
this._obj={'a':1}; // it works by replacing whole map using custom setter
print(_obj);
this._obj['a']=2; // it works by accessing map values
print(_obj);
}
}
此外,定制的setter取代你的整個obj
地圖,而_obj['a']
更新只值分配給a
你內心的映射鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.