2016-11-20 2 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"); 

Я хотел бы сослаться на конкретное имя поля класса пользователей, позволяет говорить о поле идентификатора, без использования «идентификатора» Строки

... что-то вроде (user->id).getName(); (должен вернуть строку «идентификатор»)

Примечание: Обход свойств объекта пользователя не является мне помогает, так как мне придется выбирать среди них, используя «идентификатор» Строка и так жесткий код где-то

желающий ясный.

Целью является выбор некоторых свойств пользователя Object для заполнения таблицы без жесткого кодирования свойств объекта в виде строк. Thanks

+0

Итак, вы хотите получить предмет из словаря без ключа? –

+0

lol. Ключ существует, мой вопрос: могу ли я получить к нему доступ из объявления класса свойств – tit

+0

, пожалуйста, уточните, что вы хотите. Я полагаю, вы не хотите жестко указывать пользователя ["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"]; 
Смежные вопросы