Наследование в JavaScript осуществляется через прототипную цепочку: каждый объект имеет другой объект в качестве его прототипа, а объект наследует свойства от этого прототипа. Для каждого объекта существует три способа доступа к его объекту прототипа:
1 .__ Proto__. Прототип объекта может быть доступен через его атрибут __proto__. Это свойство поддерживается только в Firefox, Safari и Chrome, а не в IE и Opera.
2.object.getPrototypeof (). Вы можете передать объект в качестве параметра в метод object.getPrototypeof (), а после выполнения он возвращает объект объекта. Этот метод поддерживается только в стандарте Ecmascript 5.
3.O.Constructor.Protototype. Сначала получите функцию конструктора объекта, а затем обратитесь к объекту прототипа, получив свой свойство прототипа функции конструктора. Предварительным условием для использования этого метода является то, что существует атрибут конструктора, указывающий на конструктор в объекте.
Чтобы определить, существует ли прототип цепочка между двумя объектами, вы можете использовать метод iSprototype ():
Кода -копия выглядит следующим образом:
var p = {x: 1};
var o = object.create (p);
console.log (p.isprototypeof (o)); // true
Для всех объектов, созданных с помощью литералов, их объект -прототип - это объект. Прототип (как специальный объект, объект.
Кода -копия выглядит следующим образом:
var x = {a: 18, b: 28};
console.log (x .__ Proto __); // Object {}
Для всех объектов, созданных с новым оператором, их объекты прототипа являются прототипом свойства функции конструктора:
Кода -копия выглядит следующим образом:
var x = {a: 18, b: 28};
Функциональный тест (c) {
this.c = c;
}
Test.prototype = x;
var t = новый тест (38);
console.log (t); // Object {c = 38, a = 18, b = 28}
console.log (t .__ Proto __); // Object {a = 18, b = 28}
console.log (t .__ Proto __.__ Proto __); // Object {}
Процесс использования нового оператора для создания объекта в JavaScript выглядит следующим образом:
1. Создайте новый пустой объект.
2. Укажите атрибут __proto__ этого объекта на атрибут прототипа функции конструктора.
3. Используйте этот объект в качестве этого параметра и выполните функцию конструктора.
Из приведенного выше процесса создания мы можем сделать вывод о том, что все объекты, построенные из одной и той же функции конструктора, имеют атрибут __proto__ (то есть его объект прототипа), то есть только один объект прототипа:
Кода -копия выглядит следующим образом:
var t = новый тест (38);
var t2 = новый тест (68);
Console.log (t === T2); // false
console.log (t .__ Proto__ === T2 .__ Proto __); // true