2016-11-20 107 views
0

讓我們有一個JavaScript「類」的Javascript得到類聲明屬性名

var User= function(id, firstName, lastName) { 
     this.id=id; 
     this.firstName=firstName; 
     this.lastName=lastName 
    } 
    var user = new User (1,"I", "am"); 

我想引用用戶類的特定字段名,可以說id字段,不使用字符串「ID」

...像(user->id).getName();(應返回字符串「ID」)

注:枚舉用戶對象屬性並沒有幫助我,因爲我將不得不使用字符串「ID」中他們選擇等硬編碼

希望我清楚。

目標是選擇一些用戶對象的屬性來填充表格,而不用將對象屬性硬編碼爲字符串。 謝謝

+0

所以,基本上,你想從字典中得到一個項目,沒有密鑰? –

+0

大聲笑。關鍵是存在的,我的問題是:我可以從屬性類聲明 – tit

+0

訪問它請詳細說明你想要的。我想你不想硬編碼用戶[「ID」]和提取用戶的ID。 –

回答

0

使用下面的函數。你會得到你的對象中的所有鍵的數組。

var hasOwn = Object.prototype.hasOwnProperty; 
     Object.keys = Object_keys; 
     function Object_keys(obj) { 
      var keys = [], name; 
      for (name in obj) { 
       if (hasOwn.call(obj, name)) { 
        keys.push(name); 
       } 
      } 
      return keys; 
     } 

現在,你不必硬編碼的東西。只需將函數響應存儲到var並使用循環來按順序獲取值。

+0

這枚舉了對象屬性,但我將不得不對字符串硬編碼我想要的密鑰(例如「id」) – tit

0

執行此操作的一種方法可能是爲每個屬性實現一個靜態訪問的具有相同名稱的函數。

...而是paintfull寫(需要複製每一個財產申報和錯誤可能追加)

var User= function(id, firstName, lastName) { 
     this.id=id; 
     this.firstName=firstName; 
     this.lastName=lastName 
    }; 
    User.id=function() {return "id"}; 
    User.firstName=function() {return "firstName"}; 
    User.lastName=function() {return "lastName"}; 

有了它,我可以訪問屬性的名稱,而不喜歡

(太多)歧義
var user = new User (1,"I", "am"); 
var myFieldList=[User.id(), User.firstName()]; 

代替

var myFieldList=["id", "firstName"];