beautify 1st part of the tutorial

This commit is contained in:
Ilya Kantor 2015-03-10 12:36:58 +03:00
parent e3dd2cedc0
commit 6444024a9d
327 changed files with 2358 additions and 1986 deletions

View file

@ -25,7 +25,7 @@
```js
1. o = new Object();
2. o = {}; // пустые фигурные скобки
2. o = {}; // пустые фигурные скобки
```
Обычно все пользуются синтаксисом `(2)`, т.к. он короче.
@ -50,9 +50,9 @@ var person = {}; // пока пустой
```js
// при присвоении свойства в объекте автоматически создаётся "ящик"
// с именем "name" и в него записывается содержимое 'Вася'
person.name = 'Вася';
person.name = 'Вася';
person.age = 25; // запишем ещё одно свойство: с именем 'age' и значением 25
person.age = 25; // запишем ещё одно свойство: с именем 'age' и значением 25
```
<img src="object-person-1.svg">
@ -61,7 +61,7 @@ person.age = 25; // запишем ещё одно свойство: с име
Чтобы прочитать их -- также обратимся через точку:
```js
alert(person.name + ': ' + person.age); // "Вася: 25"
alert( person.name + ': ' + person.age ); // "Вася: 25"
```
Удаление осуществляется оператором `delete`:
@ -84,8 +84,8 @@ delete person.age;
Его синтаксис: `"prop" in obj`, причем имя свойства -- в виде строки, например:
```js
if ("name" in person) {
alert("Свойство name существует!");
if ("name" in person) {
alert( "Свойство name существует!" );
}
```
@ -99,17 +99,19 @@ if ("name" in person) {
//+ run
var person = {};
alert(person.lalala); // undefined, нет свойства с ключом lalala
alert( person.lalala ); // undefined, нет свойства с ключом lalala
```
Таким образом **мы можем легко проверить существование свойства -- получив его и сравнив с `undefined`**:
```js
//+ run
var person = { name: "Василий" };
var person = {
name: "Василий"
};
alert(person.lalala === undefined); // true, свойства нет
alert(person.name === undefined); // false, свойство есть.
alert( person.lalala === undefined ); // true, свойства нет
alert( person.name === undefined ); // false, свойство есть.
```
[smart header="Разница между проверками `in` и `=== undefined`"]
@ -127,8 +129,8 @@ obj.test = undefined; // добавили свойство со значение
*!*
// проверим наличие свойств test и заведомо отсутствующего blabla
alert(obj.test === undefined); // true
alert(obj.blabla === undefined); // true
alert( obj.test === undefined ); // true
alert( obj.blabla === undefined ); // true
*/!*
```
@ -185,10 +187,12 @@ person.любимый стиль музыки = 'Джаз'; // ??? ошибка
```js
//+ run
var person = { age: 25 };
var person = {
age: 25
};
var key = 'age';
alert( person[key] ); // выведет person['age']
alert( person[key] ); // выведет person['age']
```
Вообще, если имя свойства хранится в переменной (`var key = "age"`), то единственный способ к нему обратиться -- это квадратные скобки `person[key]`.
@ -203,9 +207,9 @@ alert( person[key] ); // выведет person['age']
```js
var menuSetup = {
width: 300,
height: 200,
title: "Menu"
width: 300,
height: 200,
title: "Menu"
};
// то же самое, что:
@ -222,9 +226,9 @@ menuSetup.title = 'Menu';
```js
var menuSetup = {
width: 300,
'height': 200,
"мама мыла раму": true
width: 300,
'height': 200,
"мама мыла раму": true
};
```
@ -232,7 +236,7 @@ var menuSetup = {
```js
var user = {
name: "Таня",
name: "Таня",
age: 25,
*!*
size: {
@ -243,9 +247,9 @@ var user = {
*/!*
}
alert( user.name ) // "Таня"
alert(user.name) // "Таня"
alert( user.size.top ) // 90
alert(user.size.top) // 90
```
Здесь значением свойства `size` является объект `{top: 90, middle: 60, bottom: 90 }`.
@ -275,6 +279,7 @@ var user = {
Например, есть много объектов с полями `name` и `age`:
```js
//+ no-beautify
{name: "Вася", age: 25}
{name: "Петя", age: 22}
{name: "Маша", age: 19}
@ -284,6 +289,7 @@ var user = {
Для их эффективного хранения будет создана структура, которая описывает данный вид объектов. Выглядеть она будет примерно так: `<string name, number age>`. А сами объекты будут представлены в памяти только данными:
```js
//+ no-beautify
<структура: string name, number age>
Вася 25
Петя 22
@ -316,7 +322,7 @@ user.isAdmin = true;
<li>Через переменную, в которой хранится ключ:
```js
var key = "prop";
var key = "prop";
obj[key] = 5
```