2017-07-17 73 views
1

例如,在JavaScript中我可能有一個功能:Dart有沒有一種方法可以動態訪問屬性,就像JavaScript對象一樣?

this.getPrettyAttr = function(attr){ 
    return attr + " is: " + this[attr]; 
} 

其中attr是一個字符串,得到的東西,如:

「實力是7」, 「高度爲5」,「功率是9001「,」名字是貝蒂「

有沒有一種等效的方式來做到這一點在飛鏢,或者我堅持做手動再次?

+0

不,另一個是專門爲DOM的東西。儘管有一條評論確實指出Dart只會爲DOM而不是通用的東西。 – Jenny

回答

3

您可以使用鏡像。下面是引用的文章:https://www.dartlang.org/articles/libraries/reflection-with-mirrors

在你的情況,你可以寫這樣的:

import 'dart:mirrors'; 

getPrettyAttr(Object x, Symbol attr) { 
    var mirror = reflect(x); 
    return '$attr is: ${mirror.getField(attr)}'; 
} 

然而,有一點需要注意的飛鏢使用鏡子。如果你的程序只是服務器端(即,你使用dart:io),那麼鏡像就很好。但是,如果您的程序正在編譯爲JavaScript,那麼鏡像可能會使您的應用程序膨脹,因爲編譯器無法知道可能在您的應用程序中調用哪些函數。

相關問題