Эта статья переведена вручную. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст. Дополнительные сведения.
Перевод
Текст оригинала
Информация
Запрошенная вами тема показана ниже. Однако эта тема не включена в библиотеку.

Свойство __proto__ (Object) (JavaScript)

Содержит Ссылку на внутренний прототип, содержащий указанный объект.

object.__proto__

object

Обязательное. Объект, для которого требуется задать прототип.

Свойство __proto__ можно использовать для задания прототипа объекта.

Объект или функция наследуют все методы и свойства нового прототипа вместе со всеми методами и свойствами в цепочке прототипов нового прототипа. Объект может иметь только один прототип (не включая наследуемые прототипы в цепочке прототипов), поэтому при вызове свойства __proto__ следует заменить предыдущий прототип.

можно задать прототип только в расширяемом объекте. Дополнительные сведения см. в разделе Функция Object.preventExtensions (JavaScript).

Примечание Примечание

Имя свойства __proto__ начинается и заканчивается двумя символами подчеркивания.

В следующем примере показано, как задать прототип для объекта.

function Rectangle() {
}

var rec = new Rectangle();

if (console && console.log) {
    console.log(rec.__proto__ === Rectangle.prototype);  // Returns true
    rec.__proto__ = Object.prototype;
    console.log(rec.__proto__ === Rectangle.prototype);  // Returns false
}

В следующем примере кода показано добавление свойств в объект путем добавления их в прототип.

var proto = { y: 2 };

var obj = { x: 10 };
obj.__proto__ = proto;

proto.y = 20;
proto.z = 40;

if (console && console.log) {
    console.log(obj.x === 10);  // Returns true
    console.log(obj.y === 20);  // Returns true
    console.log(obj.z === 40);  // Returns true
}

Следующий пример кода добавляет свойства в объект String путем задания в нем нового прототипа.

var stringProp = { desc: "description" };

String.__proto__ = stringProp;
var s1 = "333";
var s2 = new String("333");

if (console && console.log) {

    console.log(String.desc === "description"); // Returns true
    console.log(s1.desc === "description");     // Returns false
    console.log(s2.desc === "description");     // Returns false

    s1.__proto__ = String;  // Can't be set.
    s2.__proto__ = String;

    console.log(s1.desc === "description"); // Returns false
    console.log(s2.desc === "description"); // Returns true
}

Поддерживается в следующем режиме документов: стандартный режим Internet Explorer 11. Также поддерживается в приложениях Магазина (Windows 8,1 и Windows Phone 8.1). См. Сведения о версии.

Не поддерживается в следующих режимах документов: случайный режим, стандартный режим Internet Explorer 6, стандартный режим Internet Explorer 7, стандартный режим Internet Explorer 8, стандартный режим Internet Explorer 9, стандартный режим Internet Explorer 10. Не поддерживается в Windows 8.

Добавления сообщества

Показ:
© 2015 Microsoft