Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.08.2015, 18:53
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

За что вы любите Javascript?
"Чтобы что то делать надо это любить или ненавидеть"(с)

Чтобы годами делать "как бы" одно и то же (писать код на объектно-ориентированных императивных языках программирования) определённо нужно иметь интерес к выполняемой работе.
Вопрос в названии темы.

P.s. меня пока что привлекает магия, что многие сложные задачи можно сделать только из сочетания function и {}. Мне это напоминает одну из лучших (по простоте правил, ибо мне лень учить много правил и поэтому я не играю в доту) игр:
https://ru.wikipedia.org/wiki/Жизнь_(игра)
Ответить с цитированием
  #2 (permalink)  
Старый 08.08.2015, 19:10
Профессор
Посмотреть профиль Найти все сообщения от javaQest
 
Регистрация: 07.08.2015
Сообщений: 154

Сообщение от EmperioAf
что многие сложные задачи можно сделать только из сочетания function и {}
это какие же например? Не совсем понятно, что имеется в виду, не могли бы Вы поподробней?

По сабжу. Я люблю JS за динамику. Он не так динамичен, как Ъ, но не скатился пока до уровня жаба/++. Впрочем, скатывается потихоньку, к сожалению.

Была бы моя воля, я бы не учил JS, есть несколько языков, которые его наголову превосходят, для души они милей. Но он очень распространен сейчас, без него никуда. Во всяком случае, это далеко не худший язык из попсовых, один из лучших.
Ответить с цитированием
  #3 (permalink)  
Старый 08.08.2015, 19:20
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

Сообщение от javaQest
это какие же например? Не совсем понятно, что имеется в виду, не могли бы Вы поподробней?
я наверное плохо выразился, я имел ввиду примерно такие выражения:
var name = "";

var user = {
  name: "Василий",

  export: function() {
    return {
      value: this
    };
  }

};

alert( user.export().value.name );
Ответить с цитированием
  #4 (permalink)  
Старый 08.08.2015, 19:27
Профессор
Посмотреть профиль Найти все сообщения от javaQest
 
Регистрация: 07.08.2015
Сообщений: 154

Сообщение от EmperioAf Посмотреть сообщение
я наверное плохо выразился, я имел ввиду примерно такие выражения:
var name = "";

var user = {
  name: "Василий",

  export: function() {
    return {
      value: this
    };
  }

};

alert( user.export().value.name );
Ну, и какую задачу Вы решаете этим кодом?

Последний раз редактировалось javaQest, 08.08.2015 в 19:34.
Ответить с цитированием
  #5 (permalink)  
Старый 08.08.2015, 19:35
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

Сообщение от javaQest
Ну, и какую задачу Вы решаете этим кодом, который, по сути, то же самое что
внутри метода export могло быть всё что угодно - любая обработка. А дальше мы просто вызываем user.export() и получаем всё что там рассчитали. Но я на самом деле хотел сказать о модулях:
;(function(){
// some code
    return result;
}());

Просто я как ребёнок смотрю на всё это. Понимаете? Для меня почти каждый вопрос в https://learn.javascript.ru/quiz/js-basic сложен, ибо мне многое непонятно. И хотя я 90% вопрос уже видел по 3-5+ раз я по-прежнему прохожу эти тесты обычно на 70-80%...
Ответить с цитированием
  #6 (permalink)  
Старый 08.08.2015, 19:50
Профессор
Посмотреть профиль Найти все сообщения от javaQest
 
Регистрация: 07.08.2015
Сообщений: 154

Сообщение от EmperioAf
Но я на самом деле хотел сказать о модулях:
Ну, модули, это не совсем часть языка, скорей, вариант реализации.

Сообщение от EmperioAf
;(function(){
// some code
    return result;
}());
На этом многие новички спотыкаются. Это делается для инкапсуляции данных. У Вас, при таком вызове, создается замыкание, и все переменные, объявленные через var, будут видимы только внутри ф-ций, созданных в данном окружении.

На самом деле, это тема лексических замыканий. Она довольно забубеннная. Ключ к пониманию тут лежит в подковерной возне интерпретатора. При создании любой функции, создается подковерный объект, неймспейс, с котором дефолтно связываются переменные, внутри ф-ций.

Если хотите понять это в деталях, лучше не читайте статейки в интернете, почитайте о них в серьезной литературе. Они не сложны, сами по себе, они сложны для понимания именно потому, что тут неявные действия со стороны интерпретатора.

Вы не правы, что без этого нельзя обойтись, вполне можно. любое замыкание -- это по-сути, не более чем функция+окружение. Поэтому

f=function(){
  var x=1
  return function(){alert(x)}
}()

//то же самое, что

o={
 x: 1,
 f: function(){alert(this.x)}
}

f()
o.f()

за исключением инкапсуляции(в плохом смысле).

Последний раз редактировалось javaQest, 08.08.2015 в 19:52.
Ответить с цитированием
  #7 (permalink)  
Старый 08.08.2015, 19:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от javaQest
return this.x}
может alert(this.x) для наглядности
Ответить с цитированием
  #8 (permalink)  
Старый 08.08.2015, 19:59
Профессор
Посмотреть профиль Найти все сообщения от javaQest
 
Регистрация: 07.08.2015
Сообщений: 154

рони,
Да, исправил, спасибо.
Ответить с цитированием
  #9 (permalink)  
Старый 08.08.2015, 21:28
Профессор
Посмотреть профиль Найти все сообщения от javaQest
 
Регистрация: 07.08.2015
Сообщений: 154

Сообщение от Rise
пишет undefined
Ваш код пишет, да, а в чем вопрос?
Ответить с цитированием
  #10 (permalink)  
Старый 08.08.2015, 21:35
Профессор
Посмотреть профиль Найти все сообщения от javaQest
 
Регистрация: 07.08.2015
Сообщений: 154

Rise,
Если вопрос, почему, то ответ -- потому что ваша функция вызвана вне контекста о. А первую f вы затерли вторым присваиванием
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что я хочу от JavaScript? CyberMaster Библиотеки/Тулкиты/Фреймворки 53 12.02.2012 22:31
фрактальный сыр x-yuri Оффтопик 76 23.11.2011 21:59
Требуется JavaScript программист (Санкт-Петербург)) MediaGet Работа 32 31.10.2011 17:41
Правда ли то, что с помощью JQuery можно сделать все, что связано с JavaScript? Bandicoot Оффтопик 3 10.03.2011 15:09
Грамотный javascript front-end разработчик Илья Кантор Работа 1 13.03.2010 22:20