J'ai une fonction définie dans mon JavaScript avec deux propriétés: size
et url
:JavaScript - Créer un nouvel objet (Fonction) Utilisation d'un littéral d'objet?
function IconInfo() {
this.size = size;
this.url = url;
}
intérieur d'une autre fonction que je crée une nouvelle instance de IconInfo
et définissez les propriétés de cette façon:
function SomeFunction() {
var icon = new IconInfo();
icon.size = 64;
icon.url = "http://somesite.com/image1.png";
}
Isn Y at-il un moyen de créer une instance comme celle-ci:
var icon = new IconInfo({
size : 64,
url : "http://somesite.com/image1.png"
});
I j'aime mieux cette notation, elle semble plus concise et plus facile à lire.
=========================== MISE À JOUR ================ ================
sur la base de la réponse de Tim de ce fait de la manière suivante:
var icon = {
size : 64,
url : "http://somesite.com/image1.png"
};
J'ai la question suivante.
Disons que j'ai 2 fonctions à la fois avec les mêmes propriétés exactes et arguments du constructeur:
function Func1(x) {
this.x = x;
}
function Func2(x) {
this.x = x;
}
et j'ai un conteneur qui contient deux types:
function Container() {
this.f = null;
}
Si j'ajoute un des fonctions utilisant cette méthode quel type sera-t-il réellement?
...
var container = new Container();
container.x = new f { // is f Func1 or Func2?
x: 10;
}
Le terme [* "type" *] (http://ecma-international.org/ecma-262/5.1/#sec-8) a une signification définie dans ECMAScript qui n'est pas cohérente avec votre utilisation. Vous l'utilisez plus comme "class", mais [* '[[Class]]' *] (http://ecma-international.org/ecma-262/5.1/#sec-8.6.2) a un sens différent aussi. Donc, vous voulez vraiment demander "comment puis-je distinguer entre une instance de Func1 et Func2". Regardez l'opérateur [* instanceof *] (http://ecma-international.org/ecma-262/5.1/#sec-11.8.6), ou peut-être la propriété * constructor * de l'objet, mais il y a des problèmes avec les deux approches. . – RobG