Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Объект на основе функции (https://javascript.ru/forum/misc/47388-obekt-na-osnove-funkcii.html)

cyber 22.05.2014 10:13

Цитата:

Сообщение от kobezzza
Свойство __proto__ добавлено в стандарт и работает уже везде.

Опа, и как я это пропустить умудрился и как давно?

devote 22.05.2014 10:14

Цитата:

Сообщение от cyber
__proto__ работает в хроме, лисе и опере.

начиная с 10-ой версии ИЕ он тоже работает... Одним словом есть везде кроме ИЕ ниже десятки...

kobezzza 22.05.2014 11:59

Цитата:

Опа, и как я это пропустить умудрился и как давно?
Ну, я узнал об этом где-то год назад, когда в очередной раз листал драфт ES6.

Но на mdn пишут, что свойство deprecated и лучше юзать getPrototypeOf / setPrototypeOf, но мой взгляд свойство оч полезное, т.к. позволяет удобно задавать прототип при декларации объекта через литерал, а следовательно можно сахарно юзать с примесями и т.д.

var a = {
  a: 1,
  __proto__: {
    b: 2
  }
};

alert(a.hasOwnProperty('b') === false);
alert(a.b);


Другое дело, что в ES6 для таких вещей ввели новый тип данных Symbol, и наверное было бы более логично, чтобы можно было делать так:


var a = {
  a: 1,
  @@prototype: {
    b: 2
  }
};

cyber 22.05.2014 12:51

kobezzza, кстати, не знаешь в каком щас состояние штука (не помню названия) которая позволяет наследовать от стандартных классов ?

kobezzza 22.05.2014 12:59

Цитата:

Сообщение от cyber (Сообщение 312851)
kobezzza, кстати, не знаешь в каком щас состояние штука (не помню названия) которая позволяет наследовать от стандартных классов ?

@@create, ни в каком пока:)

Но вот @@iterator уже в FF есть.

foo 22.05.2014 17:30

Цитата:

Сообщение от Aetae (Сообщение 312814)
foo, Ну так вторая - безымянная. Fu - в таком случае просто переменная.

Это было к тому сказано, что в общем случае, невозможно узнать по св-ву name имя функции, в том числе и из какой ф-ции был возвращен/создан объект, потому что объект может быть возвращен/создан и из безымянной функции. А вот к чему Вы написали свое замечание, я не понял.

cyber 22.05.2014 18:25

Цитата:

Сообщение от kobezzza
@@create, ни в каком пока

О, сенк что напомнил как называется.
Печаль, жду эту фичу...

cyber 22.05.2014 18:26

Цитата:

Сообщение от devote
начиная с 10-ой версии ИЕ он тоже работает... Одним словом есть везде кроме ИЕ ниже десятки...

Как то пропустил это .

Sergey_New 27.05.2014 11:26

Poznakomlus,
С объектом из функции возвращается её имя.
Если объект Array, то возвращается "function Array", хотя начало строки до круглой скобки не отличаются. Что поправить в паттерне?

Vlasenko Fedor 27.05.2014 14:38

<script>
  function person() {
    this.sex = "";
    this.name = "";
  }
  var persona = new person();
  var a = [];
  var reg = /^.*?\s(.*)\(/
  alert("Function name - " + reg.exec(a.constructor.toString())[1]);
  alert("Function name - " + reg.exec(persona.constructor.toString())[1]);
</script>

не совсем понял, что имеешь ввиду. Покажи на примере


Часовой пояс GMT +3, время: 05:44.