LINUX.ORG.RU
ФорумTalks

Почему JS?

 


0

1

Почему на веб-страницах используется только JS и производные? Я знаю про попытки сделать python на js и запускать python скрипты на страницах, но почему браузеры по-умолчанию понимают только js?

★★★★★
Ответ на: комментарий от int64

Скажи мне, какое поведение массива ты не можешь сэмулирвовать на обычно объекте?

Всё, что указано здесь, начиная с length.

про specification types ты конечно не знаешь

A specification type corresponds to meta-values that are used within algorithms to describe the semantics of ECMAScript language constructs and ECMAScript language types. The specification types are Reference, List, Completion, Property Descriptor, Lexical Environment, Environment Record, and Data Block. Specification type values are specification artefacts that do not necessarily correspond to any specific entity within an ECMAScript implementation. Specification type values may be used to describe intermediate results of ECMAScript expression evaluation but such values cannot be stored as properties of objects or values of ECMAScript language variables.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Всё, что указано здесь, начиная с length.

Лол, и что именно тебе мешает это имитировать, я не понимаю тебя. Ты не умеешь делать методы объекта, чтобы реализовать concat\forEach\map\etc, или не знаешь о геттерах, сеттерах, чтобы сделать length? Или что у тебя там не получается? Итератор? Пиши конкретнее.

int64
()
Ответ на: комментарий от x3al

Если тебе надо, чтобы built-in методы принимали твой кастомный объект как за родной массив, например Array.isArray, так используй наследование, Люк. class YourCustomArray extends Array {}

Но это никакого отношения к поведению не имеет, так как Array.isArray проверяет не является ли объект массивом или ведет себя как массив, а является ли объект подлинным экземпляром Array.

Для имитации поведения, ты в своем YourCustomArray должен реализовать свой метод YourCustomArray.isYourCustomArray, который бы проверял точно ли это твой кастомный array а ни какой-нибудь еще.

int64
()
Ответ на: комментарий от int64

Понятно, ты просто не знаешь спецификацию.

В двух словах: Function — не сильно более специальный объект, чем Array или Error и не является отдельным типом точно так же, как Array и Error не являются ими. typeof не возвращает тип, и спецификация напрямую это говорит.

Ты не умеешь делать методы объекта, чтобы реализовать concat\forEach\map\etc, или не знаешь о геттерах, сеттерах, чтобы сделать length? Или что у тебя там не получается? Итератор? Пиши конкретнее.

var myArray = new myArray(1, 2, 3);
var extendedArray = [4, 5].concat(myArray);

До ES6 тупо нет способа реализовать myArray так, чтобы это работало (полифиллы/babel не помогут). Ну, кроме возврата настоящего Array из myArray, но тут будут другие недостатки.

x3al ★★★★★
()
Последнее исправление: x3al (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.