2012-08-02 7 views
5

Czy jest jakiś sposób, aby to zrobić w konstruktorze?Tworzenie instancji obiektu javascript i zapełnianie jego właściwości w pojedynczej linii

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

Tak, oczywiście. Widać tu pewne zużycie: [Wcześniej odpowiedział na pytanie] [1] [1]: http://stackoverflow.com/questions/1114024/constructors-in-javascript-objects – Steve

+0

możliwy duplikat [Utwórz obiekt z właściwościami,] (http://stackoverflow.com/questions/8224680/create-an-object-with-properties) –

+0

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

Odpowiedz

13

Dlaczego nie można po prostu zrobić to w ten sposób:

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

, a cytaty z miasta i miasta są opcjonalne. – Thilo

+0

To prawda, Thilo, spędziłem zbyt wiele czasu z "JSON" ;-) – nez

5

tak:

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

spróbować tej

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); 

To byłby prototypowy sposób, który preferuję w stosunku do zwykłych literałów obiektów, gdy potrzebuję więcej niż jednej instancji obiektu.

0

spróbuj tego:

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

Nie komplikować. Oto najprostszy sposób definiowania konstruktora.

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

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

Doprowadziłoby to do prywatnych metod tylko w twojej klasie. Za pomocą prototypu możesz definiować metody dostępne poza klasą. Jeśli potrzebujesz prywatnych metod, możesz je zdefiniować w funkcji konstruktora. – Sutuma

+0

To nie doprowadzi do prywatnych metod. Proszę przeczytać http://javascript.crockford.com/private.html –

+0

Z twojego linku: "Metody prywatne są wewnętrznymi funkcjami konstruktora." Zasadniczo to się skończy, jeśli zadeklarujesz funkcje w swojej definicji. – Sutuma

1

Można napisać swój własny konstruktor:

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

var obj = new myObject("A","B"); 
Powiązane problemy