#javascript #knockout.js
#javascript #knockout.js
Вопрос:
Я изучаю Javascript и наткнулся на этот код из примера Knockout.JS:
var viewModel = {
people: [
new Person("Annabelle", ["Arnie", "Anders", "Apple"]),
new Person("Bertie", ["Boutros-Boutros", "Brianna", "Barbie", "Bee-bop"]),
new Person("Charles", ["Cayenne", "Cleopatra"])
],
showRenderTimes: ko.observable(false)
};
Если я правильно понимаю, ‘people’ — это переменная-член, содержащая массив объектов ‘Person’. Но почему после массива стоит запятая? Разве ‘showRenderTimes’ не должна быть следующей переменной-членом, объявленной в классе? Или это какое-то расширение элемента ‘people’? Почему эта запятая не является точкой с запятой?
Вот полный список на случай, если он вам понадобится:
var Person = function(name, children) {
this.name = name;
this.children = ko.observableArray(children);
this.addChild = function() {
this.children.push("New child");
}.bind(this);
}
// The view model is an abstract description of the state of the UI, but without any knowledge of the UI technology (HTML)
var viewModel = {
people: [
new Person("Annabelle", ["Arnie", "Anders", "Apple"]),
new Person("Bertie", ["Boutros-Boutros", "Brianna", "Barbie", "Bee-bop"]),
new Person("Charles", ["Cayenne", "Cleopatra"])
],
showRenderTimes: ko.observable(false)
};
$( document ).ready(function() {
// Define a "Person" class that tracks its own name and children, and has a method to add a new child
ko.applyBindings(viewModel);
});
Ответ №1:
Здесь у нас есть a, viewModel
Object
который имеет два поля: people
и showRenderTimes
.
Итак, упрощая, это выглядит так:
var viewModel = {people:'something', showRenderTimes:'somethingElse'};
Вы должны разделять каждое поле запятой ,
, и именно поэтому оно там.
Другой пример:
var viewModel = {
people: [],
showRenderTimes: 'something'
};
Ответ №2:
Вот как вы создаете объекты в JavaScript:
var obj = {
name1:value1,
name2:value2,
name3:value3
};