2010-11-19 18 views
0

Wenn ich ein Objekt mit {} erstellen und dann versuchen, eine Eigenschaft zu referenzieren, wie würde ich es tun?Objekt-Syntax und dies in Javascript

function Person(){ 
    this.name : "test"; 
    } 

    var x = new Person(); 
    alert(x.name); 
+1

Wonach fragen Sie? – SLaks

Antwort

0

Auf die gleiche Weise können Sie auf eine andere Eigenschaft zugreifen.

Zum Beispiel:

alert({ name: -1 }.name); 

Ihr Codebeispiel ist ungültige Syntax.
Das Zeichen : wird nur im Objekt Literale verwendet.

Um Objekte im Konstruktor (oder andere) Funktionen, sollten Sie normale Zuordnung verwenden:

function Person(){ 
    var thing = "test";  //Assign a variable 
    this.name = "test";  //Assign a property 
} 
alert(new Person().name); 
+0

in Objektliteralen, gibt es eine Möglichkeit, die Variable privat zu halten? – steve

+0

@steve: Ein Objektliteral erstellt ein normales Objekt. Nr. – SLaks

+0

Danke, wann sollte ich Objektliterale oder nur normale Syntax verwenden? – steve

5

Ihre Syntax ausgeschaltet ist, können Sie einfach in Ihrem Fall tun:

function Person(){ 
    this.name = "test"; 
    //  ^--- =, not : 
} 

var x = new Person(); 
alert(x.name); 

Wenn Sie wirklich wollen Objekt-Literal-Syntax verwenden, können Sie, aber wahrscheinlich am besten, es in einer Konstruktorfunktion zu vermeiden (was ist, was Sie in Ihrem Code haben). Dies funktioniert, zum Beispiel, aber ist nicht das gleiche wie Ihr Original-Code:

var Person = { 
    name: "test" 
}; 
alert(Person.name); 

Sie auch Funktionen Art und Weise, die definieren können (und die Menschen tun):

var Person = { 
    name: "test", 
    speak: function() { 
     alert(this.name); 
    } 
}; 
Person.speak(); // alerts "test" 

... obwohl ich bin kein Fan davon, weil I prefer named functions (diese Funktion ist anonym).

0
my_obj = {name:'john', age:31}; 
alert(my_obj.name); 
Verwandte Themen