Использование квадратных скобок в объектах - PullRequest
0 голосов
/ 13 марта 2012

мой код имеет , чтобы быть таким:

rules: {
  jform[name]: {
  required:true,
  minlength:5,
  maxlength:15
},

как мне использовать эти квадратные скобки? Есть много ответов на эту тему, найденных на этом сайте и в Google, но не специально для этого.

Ответы [ 4 ]

7 голосов
/ 14 марта 2012

Я не могу точно ответить на ваш вопрос в его нынешнем виде, потому что вы спрашиваете, как использовать недопустимый синтаксис, который невозможен, поскольку он недействителен.

Однако, что я могу Объясните, как JSON работает в JavaScript, и надеемся, что оно решит вашу проблему:

Основы

{} - это литерал объекта

//this creates a new object
a = {};
//so does this
a = new Object();

[] является литералом массива

//this creates a new array
a = [];
//so does this
a = new Array();

свойства могут быть доступны через . и [] запись:

//these are the same
a.b = c;
a['b'] = c;

Литералы объекта могут быть установлены с использованием литеральных значений или строк:

a = {
    //any character you can use for a variable name can be
    //used to instantiate an object without quotes
    b: c,
    //special characters need to be quoted
    "foo bar baz": "fizz buzz"
};

Ваш оригинальный синтаксис:

rules: {
  jform[name]: {
  required:true,
  minlength:5,
  maxlength:15
}

недопустим, поскольку вы не можете использовать [ и ] символы в имени переменной, однако вы можете использоватьстрока для литерального значения:

rules: {
  "jform[name]": {
  required:true,
  minlength:5,
  maxlength:15
}

... которое будет доступно как:

rules["jform[name]"]

, но, похоже, вы хотите получить доступ к данным как:

rules.jform[name]

, который должен быть установлен как:

rules: {
    jform: {}
}
...more code...
rules.jform[name] = {rules: {
    required:true,
    minlength:5,
    maxlength:15
};
3 голосов
/ 14 марта 2012

Я предполагаю, что вы хотите значение jform[name] для ключа в объекте. Вы не можете использовать переменные в качестве ключей при объявлении литерала объекта. Вам нужно будет добавить этот ключ как другое утверждение.

Пример:

var data = {
    rules: {
    }
};
data.rules[jform[name]]= {
    required:true,
     minlength:5,
     maxlength:15
};

Если вы хотите, чтобы ключ был буквально jform[name], тогда вам нужно использовать кавычки вокруг ключа.

rules: {
    "jform[name]": {
        required:true,
        minlength:5,
        maxlength:15
    }
}
3 голосов
/ 14 марта 2012
obj = {
 "rules" : {
  "jform" : {
    "name" : {
      required:true,
      minlength:5,
      maxlength:15
    }
   }
  }
},

теперь вы можете получить доступ к таким значениям, как это

 obj[rules][jform][name]
1 голос
/ 14 марта 2012

Вы имеете в виду JSON?Или объектные литералы JavaScript?Удалите из своего вопроса модное слово "jQuery".

Если вы хотите указать имя свойства в (квадратных) скобках, вы можете сделать

rules = {
  "jform[name]": {
    required:true,
    minlength:5,
    maxlength:15
  }
}

или

rules["jform[name]"] = {...};
...