Je veux ajouter une nouvelle propriété à 'myObj', la nommer 'chaîne1' et lui donner la valeur 'chaîne2', mais lorsque je le fais, elle renvoie 'indéfini:
var myObj = new Object;
var a = 'string1';
var b = 'string2';
myObj.a = b;
alert(myObj.string1); //Returns 'undefined'
alert(myObj.a); //Returns 'string2'
En d'autres termes: comment créer une propriété d'objet et lui donner le nom stocké dans la variable, mais pas le nom de la variable elle-même?
Il y a la notation par points et la notation entre crochets
myObj[a] = b;
ES6 introduit les noms de propriété calculés, qui vous permettent de faire
var myObj = {[a]: b};
Notez que la prise en charge du navigateur est actuellement négligeable.
La notation par points et les propriétés sont équivalentes. Donc, vous accomplissez comme ceci:
var myObj = new Object;
var a = 'string1';
myObj[a] = 'whatever';
alert(myObj.string1)
(alerte "peu importe")
Ecu, si vous faites myObj.a
, alors il cherchera la propriété nommée a de myObj. Si vous faites myObj[a] =b
, alors il cherchera la propriété a.valueOf()
de myObj.
Bon mot:
obj = (function(attr, val){ var a = {}; a[attr]=val; return a; })('hash', 5);
Ou:
attr = 'hash';
val = 5;
var obj = (obj={}, obj[attr]=val, obj);
Quelque chose de plus court?
Vous pouvez simplement utiliser ceci:
function createObject(propName, propValue){
this[propName] = propValue;
}
var myObj1 = new createObject('string1','string2');
Tout ce que vous transmettez comme premier paramètre sera le nom de la propriété, et le second paramètre sera la valeur de la propriété.
Comme $ scope est un objet, vous pouvez essayer avec JavaScript en:
$scope['something'] = 'hey'
C'est égal à:
$scope.something = 'hey'
Vous ne pouvez pas utiliser une variable pour accéder à une propriété via la notation par points, mais utilisez plutôt la notation tableau.
var obj= {
'name' : 'jroi'
};
var a = 'name';
alert(obj.a); //will not work
alert(obj[a]); //should work and alert jroi'
Ce qui suit illustre une approche alternative pour renvoyer un objet paire de clés en utilisant la forme (a, b)
. Le premier exemple utilise la chaîne 'key'
comme nom de propriété et 'val'
comme valeur.
Exemple # 1:
(function(o,a,b){return o[a]=b,o})({},'key','val');
Exemple: # 2:
var obj = { foo: 'bar' };
(function(o,a,b){return o[a]=b,o})(obj,'key','val');
Comme indiqué dans le deuxième exemple, cela peut également modifier des objets existants (si la propriété est déjà définie dans l'objet, la valeur sera remplacée) .
Résultat 1:
{ key: 'val' }
Résultat n ° 2:
{ foo: 'bar', key: 'val' }