2012-08-02 19 views
5

¿Hay alguna forma de que pueda hacer todo esto en un constructor?Crear una instancia de un objeto javascript y rellenar sus propiedades en una sola línea

obj = new Object(); 
    obj.city = "A"; 
    obj.town = "B"; 
+0

Sí, por supuesto. Se puede ver un cierto uso aquí: [pregunta respondidas anteriormente] [1] [1]: http://stackoverflow.com/questions/1114024/constructors-in-javascript-objects – Steve

+0

posible duplicado de [Crear un objeto con propiedades,] (http://stackoverflow.com/questions/8224680/create-an-object-with-properties) –

+0

http://www.phpied.com/3-ways-to-define-a- javascript-class/ – Kasper

Respuesta

13

¿Por qué no acaba de hacerlo de esta manera:

var obj = {"city": "A", "town": "B"}; 
+2

y las citas de la ciudad y la ciudad son opcionales. – Thilo

+0

Así es Thilo, pasé demasiado tiempo con "JSON" ;-) – nez

5

así:

var obj = { 
    city: "a", 
    town: "b" 
} 
2

probar esto

var obj = { 
    city : "A", 
    town : "B" 
}; 
1
function cat(name) { 
    this.name = name; 
    this.talk = function() { 
     alert(this.name + " say meeow!") 
    } 
} 

cat1 = new cat("felix") 
cat1.talk() //alerts "felix says meeow!" 
5
function MyObject(params) { 
    // Your constructor 
    this.init(params); 
} 

MyObject.prototype = { 
    init: function(params) { 
     // Your code called by constructor 
    } 
} 

var objectInstance = new MyObject(params); 

Esta sería la forma prototipo, que prefiero sobre los literales de objetos simples cuando necesito más de una instancia del objeto.

0

probar esto:

function MyObject(city, town) { 
    this.city = city; 
    this.town = town; 
} 

MyObject.prototype.print = function() { 
    alert(city + " " + town); 
} 

obj = new MyObject("myCity", "myTown"); 
obj.print(); 
0

No complicar las cosas. Aquí hay una forma más simple de definir un constructor.

var Cont = function(city, town) { 
      this.city = city; 
      this.town = town; 
      } 

var Obj = new Cont('A', 'B'); 
+0

Esto daría lugar a métodos privados únicos en su clase. Al usar un prototipo, puede definir métodos a los que se puede acceder desde fuera de su clase. Si necesita métodos privados, puede definirlos dentro de la función de constructor. – Sutuma

+0

Esto no dará lugar a métodos privados. Por favor, lea http://javascript.crockford.com/private.html –

+0

Desde su enlace: "Los métodos privados son funciones internas del constructor". Esto es básicamente lo que terminaría si declarara funciones en su definición. – Sutuma

1

Puede escribir el constructor de encargo:

function myObject(c,t) { 
    this.city = c; 
    this.town = t; 
} 

var obj = new myObject("A","B"); 
Cuestiones relacionadas