• JavaScript: объясните return в конструкторе

    apangin
    @apangin
    Для простоты понимания примеры можно сократить до следующих.
    Первый: function Test() { this.qqq = a; }
    Второй: function Test() { return {qqq: 'a'}; }

    Теперь обратимся к спецификации ECMA-262, пункт 13.2.2. [[Construct]]

    When the [[Construct]] property for a Function object F is called, the following steps are taken:
    1. Create a new native ECMAscript object.
    2. Set the [[Class]] property of Result(1) to «Object».
    3. Get the value of the prototype property of the F.
    4. If Result(3) is an object, set the [[Prototype]] property of Result(1) to Result(3).
    5. If Result(3) is not an object, set the [[Prototype]] property of Result(1) to the original Object prototype object as described in 15.2.3.1.
    6. Invoke the [[Call]] property of F, providing Result(1) as the this value and providing the argument list passed into [[Construct]] as the argument values.
    7. If Type(Result(6)) is Object then return Result(6).
    8. Return Result(1).

    Разгадка кроется в двух последних строках: если функция возвращает объект, то результатом работы конструктора считается этот объект, если же функция возвращает что-либо другое (либо ничего не возвращает), результатом работы конструктора считается новый объект, созданный на шаге 1.
    Ответ написан
    1 комментарий
  • Как повысить карму?

    Если не можете писать посты, пишите ответы на вопросы и комментарии — полезные и в популярных темах. Сильно карму поднять можно только постами, но сильно и не нужно, вряд ли адекватный человек уйдёт в большой минус. В любом случае, есть кнопка обнуления кармы, огна вам пригодится после невинного уопминания Windows 7 в теме про выход новой Убунты -)

    Теперь про то, как поднять карму статьями:

    Статьи могут принести больше, чем комментарии. При этом обычно даже статья, набирающая рейтинг 10-30 и выходящая на главную много кармы не приносит, зато броукен-статья с рейтингом 100+ помимо инвайта принесёт и немало кармы. Особенно много кармы приносят статьи 2 типов — (не)реально полезные (мощный лазер своими руками за 1 вечер) и о чём-то позитивном (да, да — выход новой Убунты!)

    О том, чего делать не стоит:
    1. Главное не спамить, а то можно сразу более 500 кармы потерять (ну, вы понимаете, о чём я).
    2. Не упоминать Windows в темах про Linux и Mac OS, так же как наоборот.
    3. Не писать о новом Айфоне даже через 10 секунд после его выхода: ещё 10 человек точно напишут на 5 секунд раньше вас и вас заминусуют.

    Если уж совсем хотите заняться кармадрочингом, велкам в статьи
    habrahabr.ru/blogs/statistics/96435/
    habrahabr.ru/blogs/statistics/103376/
    и изучать топ записей habrahabr.ru/top/all/ выделяя тошноту ключевиков и временнЫе зависимости -)
    Ответ написан
    1 комментарий
  • Как повысить карму?

    vadimus
    @vadimus
    Веб-разработчик
    Напиши хорошую статью. Найди тех, кто интересуется этой же темой. Напиши им в личку:

    − У меня есть статья, я хочу ее опубликовать, но нет кармы. Не могли бы вы прочитать мою статью и решить, достойна ли она опубликования?

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

    Ключевой момент − хорошая статья. Над этим надо работать в первую очередь. Удачи!
    Ответ написан
    8 комментариев