Почему JavaScript был реализован с использованием прототипного наследования?

Не попадая в два дополнения: 2 ^ 8 (так как байт имеет 8 цифр и может иметь 1 из 2 значений) = 256, поэтому самые индивидуальные значения, которые может представлять байт, составляют 256. Таким образом, представляя числа от -128 до -1 - половина нашего диапазона. Я считаю, что здесь вопрос заключается в том, почему максимальное положительное значение 127, а не 128. Это потому, что мы должны представлять число 0, поэтому включительно 0-127 - это другие 128 возможностей нашего диапазона.

Если мы допустили только положительные значения, такие как беззнаковый байт, где отрицательные числа невозможен, диапазон будет 0-255, так как это 256 различных значений (включая 0).

13
задан 10 revs, 7 users 40% 26 January 2015 в 08:54
поделиться

6 ответов

Посмотрите на

typeOf и typeName

Переменные общего объекта (то есть переменные, объявленные как Object) может содержать объекты из любого класса. При использовании переменных типа Object возможно, потребуется выполнить различные действия в зависимости от класса объект; например, некоторые объекты могут не поддерживать конкретный свойство или метод. Visual Basic предоставляет два средства определения какой тип объекта хранится в переменной объекта: TypeName и оператор TypeOf... Is.

TypeName и TypeOf... Is
Функция TypeName возвращает последовательность и является наилучшим выбором при необходимо сохранить или отобразить имя класса объекта, как показано в следующий фрагмент кода:

 Dim Ctrl As Control = New TextBox
MsgBox (имя типа (Ctrl))

TypeOf... Является ли оператор лучшим выбором для тестирования объекта тип, потому что он намного быстрее, чем эквивалентное сравнение последовательностей с использованием TypeName. Следующий фрагмент кода использует TypeOf... Находится в пределах If... Then... Else оператор:

 If TypeOf Ctrl Is Button Then
MsgBox («Элемент управления - кнопка»).
Конец, если
-121--3595032-

Я думаю, что он был выбран потому, что он прост в реализации, не нуждается в дополнительных ключевых словах и пользователям не нужно понимать его, чтобы иметь возможность использовать язык. Это также более мощное и гибкое наследование, чем наследование на основе класса.

Это естественный выбор для нетипизированного языка. Основные преимущества наследования на основе класса заключаются в том, что оно позволяет выполнять статическую типизацию и, таким образом, проверку типа и ускоряет реализацию поиска на основе таблицы.

-121--1881316-

Если один из дизайнеров JavaScript не остановится, чтобы взвесить, мы можем только спекулировать. Вот мое предположение:

JavaScript выполняется так, как он интерпретируется, поэтому нет понятия отделения объявления типа объекта от самого объекта. Это очень функциональный подход. Экземпляр появляется по мере его описания - мы всегда работаем с активными экземплярами. Из-за этого понятие класса - или пассивный «шаблон экземпляра» - не имеет реального места.

12
ответ дан 1 December 2019 в 18:13
поделиться

, потому что он сильно влиял себя. И Википедия, так и ЭКМА-спецификация упоминают это.

5
ответ дан 1 December 2019 в 18:13
поделиться

Прототипное наследование (с закрытиями) позволяет другим делать то, что никогда не представляли. Это сетка нескольких парадигм, которые собрались вместе, чтобы достичь программирования общего назначения.

с языком прототипа вы можете иметь «смешивание» для ваших классов. Вы можете достичь уровня инкапсуляции, которую вы хотите, без языковых ключевых слов. Короче говоря, прототип языки потрясающие.

Я ненавижу это сказать, но JavaScript, плюс некоторые библиотеки, можете сделать все, чтобы все, чтобы она мне нужна. Он был подрывным в его развитии (должен быть подчинен к Java). У него много сил, в простейших реализациях.

При достаточном изучении / игре, вы начнете видеть преимущества этого вдохновения. JavaScript - один из немногих языков, которые «скрыты», это потенциал намеренно. Вы должны попасть в политику, если вы хотите знать «почему». Но это по этой причине, что это круто.

1
ответ дан 1 December 2019 в 18:13
поделиться

< br/> и < br/> являются правильными. Причина, по которой < br/> появился в первую очередь, заключалась в поддержке старых браузеров, которые не понимают новый синтаксис < br/> . Это действительно своего рода взлом, где / интерпретируется как атрибут без значения и игнорируется.

-121--2566740-

Посмотрите на

typeOf и typeName

Переменные общего объекта (то есть переменные, объявленные как Object) может содержать объекты из любого класса. При использовании переменных типа Object возможно, потребуется выполнить различные действия в зависимости от класса объект; например, некоторые объекты могут не поддерживать конкретный свойство или метод. Visual Basic предоставляет два средства определения какой тип объекта хранится в переменной объекта: TypeName и оператор TypeOf... Is.

TypeName и TypeOf... Is
Функция TypeName возвращает последовательность и является наилучшим выбором при необходимо сохранить или отобразить имя класса объекта, как показано в следующий фрагмент кода:

 Dim Ctrl As Control = New TextBox
MsgBox (имя типа (Ctrl))

TypeOf... Является ли оператор лучшим выбором для тестирования объекта тип, потому что он намного быстрее, чем эквивалентное сравнение последовательностей с использованием TypeName. Следующий фрагмент кода использует TypeOf... Находится в пределах If... Then... Else оператор:

 If TypeOf Ctrl Is Button Then
MsgBox («Элемент управления - кнопка»).
Конец, если
-121--3595032-

Я думаю, что он был выбран потому, что он прост в реализации, не нуждается в дополнительных ключевых словах и пользователям не нужно понимать его, чтобы иметь возможность использовать язык. Это также более мощное и гибкое наследование, чем наследование на основе класса.

Это естественный выбор для нетипизированного языка. Основные преимущества наследования на основе класса заключаются в том, что оно позволяет выполнять статическую типизацию и, таким образом, проверку типа и ускоряет реализацию поиска на основе таблицы.

1
ответ дан 1 December 2019 в 18:13
поделиться

JavaScript изначально предполагалось, что очень похоже на Lisp. Даже после того, как синтаксис был изменен, чтобы более тесно напоминать C / Java, он все еще Lisp в одежде C . Я думаю, что ответ заключается в его функциональном программировании. В чистом FP ​​нет мусорного состояния, что означает отсутствие мусорных объектов. Если вы немного расслабитесь правила и получите слегка творческий, вы окажетесь с чем-то вроде наследования Protypal, то есть вы можете продлить объекты, но не модифицировать исходный объект. Он обеспечивает одинаковую мощность, что и наследство и до сих пор дает вам некоторую неизменность.

Наконец, поверните язык вокруг, чтобы он выглядел как C ++ и Java, а альт, у вас есть новый () , а остальные - это история.

8
ответ дан 1 December 2019 в 18:13
поделиться

Вот что говорит Брендан Эйх о том, что произошло: http://weblogs.mozillazine.org/roadmap/archives/2008/04/popularity.html

Как я часто говорил, и как могут подтвердить другие сотрудники Netscape, я был принят на работу в Netscape с обещанием "сделать схему" в браузере. По крайней мере, руководство компании, включая Тома Пакина, Майкла Тоя и Рика Шелла, вместе с каким-то парнем по имени Марк Андреессен, были убеждены, что Netscape должна встроить язык программирования в HTML в виде исходного текста.

Диктат высшего инженерного руководства заключался в том, что язык должен быть "похож на Java". Это исключало Perl, Python и Tcl, а также Scheme.

Я не горжусь, но я счастлив, что выбрал Scheme-ish first-class functions и Self-ish (хотя и единичные) прототипы в качестве основных ингредиентов. Влияние Java, особенно ошибки y2k Date, а также различие между примитивами и объектами (например, string vs. String), было неудачным.

15
ответ дан 1 December 2019 в 18:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: