2017-09-21 1 views
0

Wie toString-Methode in Objektliteral Notation

objects = [{ 
 
    name: "The Godfather", 
 
    year: 1972 
 
}, { 
 
    name: "Scarface", 
 
    year: 1983 
 
}, { 
 
    name: "The Godfather II", 
 
    year: 1974 
 
}]; // Apoligies f 
 
alert(objects);

ich mag es zu definieren, so dass Alarm die Namen jeden Film gibt, zum Beispiel durch ein toString Verfahren für jede der drei Filmobjekte definieren . Gibt es eine Möglichkeit, dies innerhalb der Array-Definition von objects zu tun, oder muss ich jedes Objekt separat erstellen und auf das Array schieben? Ich würde die erste Option, so etwas wie dies bevorzugen:

objects = [{ 
 
    name: "The Godfather", 
 
    year: 1972, 
 
    toString: function { 
 
    return name 
 
    } 
 
}, { 
 
    name: "Scarface", 
 
    year: 1983, 
 
    toString: function { 
 
    return name 
 
    } 
 
}, { 
 
    name: "The Godfather II", 
 
    year: 1974, 
 
    toString: function { 
 
    return name 
 
    } 
 
}]; 
 
alert(objects);

+3

Verwenden Sie 'function() {return this.name};' –

Antwort

0

Oluwafemi Lösung hat den Trick:

objects = [{name:"The Godfather", year:1972, toString:function(){return this.name}},{name:"Scarface", year:1982, toString:function(){return this.name}},{name:"The Godfather II", year:1974, toString:function(){return this.name}}]; 
0

Sie haben this.name zum toString Funktion hinzuzufügen.

objects = [{ 
 
    name: "The Godfather", 
 
    year: 1972, 
 
    toString: function() { 
 
    return this.name 
 
    } 
 
}, { 
 
    name: "Scarface", 
 
    year: 1983, 
 
    toString: function() { 
 
    return this.name 
 
    } 
 
}, { 
 
    name: "The Godfather II", 
 
    year: 1974, 
 
    toString: function() { 
 
    return this.name 
 
    } 
 
}]; 
 
alert(objects[1].toString());

0

Verwenden function() { return this.name };

Besser, wieder verwenden die gleiche Funktion, anstatt eine neue Funktion jedes Mal zu schaffen.

function toString() { 
    return this.name; 
} 

objects = [ 
    {name:"The Godfather", year:1972, toString: toString} 
    {name:"Scarface", year:1983, toString: toString}, 
    {name:"The Godfather II", year:1974, toString: toString} 
]; 
alert(objects); 

Viel besser, schreiben Sie eine Wrapper-Funktion, die ein neues Objekt mit toString zum Objekt Prototyp angebracht zurückgibt.

function Movie(obj) { 
    this.name = obj.name; 
    this.year = obj.year; 
} 

Movie.prototype.toString = function() { 
    return this.name; 
}; 

objects = [ 
    new Movie({name:"The Godfather", year:1972}), 
    new Movie({name:"Scarface", year:1983}), 
    new Movie({name:"The Godfather II", year:1974}), 
]; 
alert(objects); 
Verwandte Themen