Biorę lekcje JavaScript / jQuery na codecademy.com. Zwykle lekcje dostarczają odpowiedzi lub podpowiedzi, ale w tej nie pomagają i jestem trochę zdezorientowany instrukcjami.
Mówi, aby funkcja makeGamePlayer zwracała obiekt z trzema kluczami.
//First, the object creator
function makeGamePlayer(name,totalScore,gamesPlayed) {
//should return an object with three keys:
// name
// totalScore
// gamesPlayed
}
Nie jestem pewien, czy powinienem to robić
//First, the object creator
function makeGamePlayer(name,totalScore,gamesPlayed) {
//should return an object with three keys:
// name
// totalScore
// gamesPlayed
this.name = name;
this.totalScore = totalScore;
this.gamesPlayed = gamesPlayed;
}
lub coś w tym stylu
//First, the object creator
function makeGamePlayer(name,totalScore,gamesPlayed) {
//should return an object with three keys:
// name
// totalScore
// gamesPlayed
var obj = {
this.name = name;
this.totalScore = totalScore;
this.gamesPlayed = gamesPlayed;
}
}
Muszę mieć możliwość modyfikowania właściwości obiektu po jego utworzeniu.
źródło
new
kluczowych Proponuję rozpoczęcie nazwę z kapitałem:MakeGamePlayer
.new GamePlayer()
.Możesz to po prostu zrobić w ten sposób za pomocą dosłownego obiektu :
function makeGamePlayer(name,totalScore,gamesPlayed) { return { name: name, totalscore: totalScore, gamesPlayed: gamesPlayed }; }
źródło
Oba style, z odrobiną poprawiania, będą działać.
Pierwsza metoda wykorzystuje konstruktor JavaScript, który jak większość rzeczy ma zalety i wady.
// By convention, constructors start with an upper case letter function MakePerson(name,age) { // The magic variable 'this' is set by the Javascript engine and points to a newly created object that is ours. this.name = name; this.age = age; this.occupation = "Hobo"; } var jeremy = new MakePerson("Jeremy", 800);
Z drugiej strony, jeśli dobrze pamiętam, twoja druga metoda nazywa się „ujawniającym wzorcem zamknięcia”.
function makePerson(name2, age2) { var name = name2; var age = age2; return { name: name, age: age }; }
źródło
Najnowszy sposób na to dzięki JavaScriptowi ES2016
let makeGamePlayer = (name, totalScore, gamesPlayed) => ({ name, totalScore, gamesPlayed })
źródło
Uznałbym te wskazówki za oznaczające:
function makeGamePlayer(name,totalScore,gamesPlayed) { //should return an object with three keys: // name // totalScore // gamesPlayed var obj = { //note you don't use = in an object definition "name": name, "totalScore": totalScore, "gamesPlayed": gamesPlayed } return obj; }
źródło