From 8b48fc7ec70fc29dc274616d4bcd540a3a668d0e Mon Sep 17 00:00:00 2001 From: Ilya Kantor Date: Wed, 25 Mar 2015 10:54:09 +0300 Subject: [PATCH] renovations --- 1-js/4-data-structures/4-object/article.md | 4 +++- .../4-descriptors-getters-setters/article.md | 10 +++++----- 1-js/6-objects-more/7-bind/6-ask-currying/task.md | 2 +- 2-ui/1-document/3-dom-console/article.md | 2 +- .../5-xhr-crossdomain/1-do-we-need-origin/solution.md | 10 ++++++++-- 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/1-js/4-data-structures/4-object/article.md b/1-js/4-data-structures/4-object/article.md index d2aee15646..ac1dd77d6b 100644 --- a/1-js/4-data-structures/4-object/article.md +++ b/1-js/4-data-structures/4-object/article.md @@ -203,7 +203,9 @@ alert( person[key] ); // выведет person['age'] Объект можно заполнить значениями при создании, указав их в фигурных скобках: `{ ключ1: значение1, ключ2: значение2, ... }`. -Такой синтаксис называется *литеральным* (оригинал - *literal*), cледующие два фрагмента кода создают одинаковый объект: +Такой синтаксис называется *литеральным* (англ. literal). + +Следующие два фрагмента кода создают одинаковый объект: ```js var menuSetup = { diff --git a/1-js/6-objects-more/4-descriptors-getters-setters/article.md b/1-js/6-objects-more/4-descriptors-getters-setters/article.md index eeac2dea06..86fd8bbc2b 100644 --- a/1-js/6-objects-more/4-descriptors-getters-setters/article.md +++ b/1-js/6-objects-more/4-descriptors-getters-setters/article.md @@ -1,15 +1,15 @@ # Дескрипторы, геттеры и сеттеры свойств -В этой главе мы рассмотрим возможности, которые позволяют очень гибко и мощно управлять всеми свойствами объекта, включая их аспекты -- изменяемость, видимость в цикле `for..in` и даже "невидимые" геттеры-сеттеры. +В этой главе мы рассмотрим возможности, которые позволяют очень гибко и мощно управлять всеми свойствами объекта, включая их аспекты -- изменяемость, видимость в цикле `for..in` и даже незаметно делать их функциями. -Они поддерживаются всеми современными браузерами, но не IE8-. Точнее говоря, они поддерживаются даже в IE8, но не для всех объектов, а только для DOM-объектов (используются при работе со страницей, это сейчас вне нашего рассмотрения). +Они поддерживаются всеми современными браузерами, но не IE8-. Впрочем, даже в IE8 их поддерживает, но только для DOM-объектов (используются при работе со страницей, это сейчас вне нашего рассмотрения). [cut] ## Дескрипторы в примерах Основной метод для управления свойствами -- [Object.defineProperty](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperty). -Он позволяет определить свойство путём задания "дескриптора" -- описания, включающего в себя ряд важных внутренних параметров. +Он позволяет как просто объявить свойство объекта, так и настроить тонко настроить его особые аспекты, которые никак иначе не изменить. Синтаксис: @@ -349,8 +349,8 @@ alert( Object.getOwnPropertyNames(obj) ); // a, internal, b ``` -
[Object.getOwnPropertyDescriptor(prop)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor)
-
Возвращает дескриптор для свойства с `prop`. +
[Object.getOwnPropertyDescriptor(obj, prop)](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor)
+
Возвращает дескриптор для свойства `obj[prop]`. Полученный дескриптор можно изменить и использовать `defineProperty` для сохранения изменений, например: diff --git a/1-js/6-objects-more/7-bind/6-ask-currying/task.md b/1-js/6-objects-more/7-bind/6-ask-currying/task.md index 152c9b9ab3..7b48e190ee 100644 --- a/1-js/6-objects-more/7-bind/6-ask-currying/task.md +++ b/1-js/6-objects-more/7-bind/6-ask-currying/task.md @@ -4,7 +4,7 @@ Эта задача -- усложнённый вариант задачи [](/task/question-use-bind). В ней объект `user` изменён. -Теперь вместо двух функций `user.loginOk()` и `user.loginFail()` теперь один метод: `user.loginDone(true/false)`, который нужно вызвать с `true` при верном ответе и `fail` -- при неверном. +Теперь заменим две функции `user.loginOk()` и `user.loginFail()` на единый метод: `user.loginDone(true/false)`, который нужно вызвать с `true` при верном ответе и `fail` -- при неверном. Код ниже делает это, соответствующий фрагмент выделен. diff --git a/2-ui/1-document/3-dom-console/article.md b/2-ui/1-document/3-dom-console/article.md index 654d5dd1b8..dc56a0356c 100644 --- a/2-ui/1-document/3-dom-console/article.md +++ b/2-ui/1-document/3-dom-console/article.md @@ -55,7 +55,7 @@ $0.style.backgroundColor = 'red'; Мы выделили элемент, применили к нему JavaScript в консоли, тут же увидели изменения в браузере. -Есть и обратная дорожка: любой элемент из JS-переменной можно посмотреть во вкладке Elements, для этого: +Есть и обратная дорожка. Любой элемент из JS-переменной можно посмотреть во вкладке Elements, для этого:
  1. Выведите эту переменную в консоли, например при помощи `console.log`.
  2. diff --git a/4-ajax/5-xhr-crossdomain/1-do-we-need-origin/solution.md b/4-ajax/5-xhr-crossdomain/1-do-we-need-origin/solution.md index 42ead58991..0f57313f5c 100644 --- a/4-ajax/5-xhr-crossdomain/1-do-we-need-origin/solution.md +++ b/4-ajax/5-xhr-crossdomain/1-do-we-need-origin/solution.md @@ -1,3 +1,9 @@ -`Origin` нужен, потому что `Referer` передаётся не всегда. В частности, при запросе со страницы на HTTPS -- нет `Referer`. +`Origin` нужен, потому что `Referer` передаётся не всегда. В частности, при запросе с HTTPS на HTTP -- нет `Referer`. -Что же касается "неправильного" `Referer` -- это из области фантастики. Когда-то, много лет назад, в браузерах были ошибки, которые позволяли подменить `Referer` из JavaScript, но они давно исправлены. +Политика [Content Security Policy](http://en.wikipedia.org/wiki/Content_Security_Policy) может запрещать пересылку `Referer`. + +По стандарту `Referer` является необязательным HTTP-заголовком, в некоторых браузерах есть настройки, которые запрещают его слать. + +Именно поэтому, ввиду того, что на `Referer` полагаться нельзя, и придумали заголовок `Origin`, который гарантированно присылается при кросс-доменных запросах. + +Что же касается "неправильного" `Referer` -- это из области фантастики. Когда-то, много лет назад, в браузерах были ошибки, которые позволяли подменить `Referer` из JavaScript, но они давно исправлены. Никакая "злая страница" не может его подменить.