JavaScript опирается на характеристики многих языков; Например, синтаксис Java, функции опираются на схему, прототип наследование рисуется от себя, а регулярное выражение рисуется из Perl. (DC Javascript: языковая сущность).
Во-первых, каждый JS является объектно-ориентированным языком, основанным на прототипе наследования. Массив внутри - это объект, функция является объектом, и, конечно, «объект» все еще является объектом. Более того, каждый объект имеет внутренний слот [[прототип]], который является ключом к соединению цепочки прототипа. По общему признанию, мы можем установить свойство прототипа для объекта, но и что? Это просто проявление; За этим стоит скрытое убийственное намерение.
ОК, тогда я могу использовать isprototypeof (), чтобы проверить, является ли объект прототипом другого объекта; Тем не менее, это также основано на цепочке [[прототип]].
Например:
// Создать функцию функции foo () {} // изменять свойство прототипа функции foo.prototype = {name: "foo.prototype"}; // Создать экземпляр var a = new foo (); // Перепишите прототип по умолчанию A, который должен был быть foo.prototype. A.Prototype = {name: "A.Prototype"};Следующий вопрос заключается в том, является ли Foo.Prototype прототипом A? !
Это необходимо просмотреть отдельно: с одной стороны, A.Prototype действительно {name: "A.Prototype"}; Тем не менее, foo.prototype.isprototypeof (a) Результат верно.
Давайте посмотрим на конкретные отношения: (Использование ---> означает незначительную цепь [[[прототип]], ---- означает отношения к свойствам прототипа)
Функция ---> function.prototype ---> object.prototype
Function.prototype <--- foo ---- foo.prototype ------> object.prototype.
Кроме того, [[[protptype]] числа, логического, строки и т. Д. По -прежнему является функцией. Прототип объект. Функция. Прототип объект является «функцией» и не содержит [[конструкция]] внутри, поэтому его нельзя использовать в качестве конструктора; Фактически, функция. Прототип аналогичен: function () {}. В дополнение к внутреннему слоту [[[Прототип]], тип «функции» также имеет атрибут прототипа. Каждая функция всегда имеет объект прототипа: this.prototype = {constructor: this} (нормальный объект). [[Прототип]] этого нормального объекта подключен к объекту. Прототип.
Является ли [[прототип]] объекта экземпляра, созданным конструктором объектом. Прототип?
[[Прототип]] этого экземпляра инициализируется свойством прототипа конструктора. Обратите внимание, что это не [[прототип]] функции. Поэтому, если это объект, построенный функцией объекта, то это действительно.
Объект - это функция, его прототип - знаменитый объект. Прототип (немного бессмысленного), но его [[прототип]] указывает на функционирование. Прототип. Пожалуйста, смотрите ниже:
Объект -----> function.prototype -------> object.prototype.
Как изменить эту цепь [[прототип]]?
Это может быть в форме var a = object.create (obj) или object.setprototypof (obja, objb). Я не думаю, что есть необходимость привести примеры, потому что отношения очень просты; Давайте приведем только несколько дерьмовых примеров. Нет смысла.
Последний вопрос заключается в том, основана ли поведенческая делегация на цепочке [[прототип]]?
Да, это так.