Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

Object.prototype

Сводка

Свойство Object.prototype представляет объект прототипа Object.

Атрибуты свойстваObject.prototype
Записываемое нет
Перечисляемое нет
Настраиваемое нет

Описание

Все объекты в JavaScript являются потомками Object; все объекты наследуют методы и свойства из прототипа объекта Object.prototype, хотя они и могут быть переопределены (за исключением объекта Object с прототипом null, то есть, созданным вызовом Object.create(null)). Например, прототипы других конструкторов переопределяют свойство constructor и предоставляют свои собственные методы toString(). Изменения в объекте прототипа Object распространяются на все объекты до тех пор, пока свойства и методы, учитывающие эти изменения, не переопределяются дальше по цепочке прототипов.

Свойства

Object.prototype.constructor
Определяет функцию, создающую прототип объекта.
Object.prototype.__proto__
Указывает на объект, который использовался в качестве прототипа при инстанцировании объекта.
Object.prototype.__noSuchMethod__
Позволяет определить функцию, выполняющуюся при вызове в качестве метода не определённого члена объекта.
Object.prototype.__count__
Использовалось для возврата количества перечисляемых свойств, определённых напрямую на пользовательском объекте, но было удалено.
Object.prototype.__parent__
Использовалось для указания контекста объекта, но было удалено.

Методы

Object.prototype.__defineGetter__()
Ассоциирует функцию со свойством, которое, при доступе к нему, выполняет эту функцию и возвращает её возвращаемое значение.
Object.prototype.__defineSetter__()
Ассоциирует функцию со свойством, которое, при его установке, выполняет эту функцию, изменяющую свойство.
Object.prototype.__lookupGetter__()
Возвращает функцию, ассоциированную с указанным свойством методом __defineGetter__.
Object.prototype.__lookupSetter__()
Возвращает функцию, ассоциированную с указанным свойством методом __defineSetter__.
Object.prototype.hasOwnProperty()
Возвращает логическое значение, указывающее, содержит ли указанное свойство непосредственно объект, или он унаследовал его по цепочке прототипов.
Object.prototype.isPrototypeOf()
Возвращает логическое значение, указывающее, состоит ли указанный объект в цепочке прототипов объекта, на котором был вызван данный метод.
Object.prototype.propertyIsEnumerable()
Возвращает логическое значение, указывающее, установлен ли внутренний атрибут ECMAScript DontEnum.
Object.prototype.toSource()
Возвращает строку, содержащую исходный код объекта в литеральной форме, представляющего объект, на котором был вызван данный метод; вы можете использовать это значение для создания нового объекта.
Object.prototype.toLocaleString()
Вызывает toString().
Object.prototype.toString()
Возвращает строковое представление объекта.
Object.prototype.unwatch()
Удаляет точку наблюдения (watchpoint) со свойства объекта.
Object.prototype.valueOf()
Возвращает значение примитива указанного объекта.
Object.prototype.watch()
Добавляет точку наблюдения (watchpoint) к свойству объекта.
Object.prototype.eval()
Использовался для вычисления строки с JavaScript-кодом в контексте указанного объекта, но был удалён.

Примеры

Поскольку Javascript, строго говоря, не имеет объекты подклассов, прототип является полезным обходным путём создания объекта «базового класса» из определённых функций, которые выступают в роли объектов. Например:

var Person = function() {
    this.canTalk = true;
    this.greet = function() {
        if (this.canTalk) {
            console.log('Привет, я ' + this.name);
        }
    };
};

var Employee = function(name, title) {
    this.name = name;
    this.title = title;
    this.greet = function() {
        if (this.canTalk) {
            console.log('Привет, я ' + this.name + ', ' + this.title);
        }
    };
};
Employee.prototype = new Person();

var Customer = function(name) {
    this.name = name;
};
Customer.prototype = new Person();

var Mime = function(name) {
    this.name = name;
    this.canTalk = false;
};
Mime.prototype = new Person();

var bob = new Employee('Боб', 'Строитель');
var joe = new Customer('Джо');
var rg = new Employee('Ред Грин', 'Разнорабочий');
var mike = new Customer('Майк');
var mime = new Mime('Мим');
bob.greet();
joe.greet();
rg.greet();
mike.greet();
mime.greet();

Вывод будет следующим:

Привет, я Боб, Строитель
Привет, я Джо
Привет, я Ред Грин, Разнорабочий
Привет, я Майк

Спецификации

Спецификация Статус Комментарии
ECMAScript 1-е издание. Стандарт Изначальное определение. Реализована в JavaScript 1.0.
ECMAScript 5.1 (ECMA-262)
Определение 'Object.prototype' в этой спецификации.
Стандарт  
ECMAScript 6 (ECMA-262)
Определение 'Object.prototype' в этой спецификации.
Кандидат в рекомендации  

Совместимость с браузерами

Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
Базовая поддержка (Да) (Да) (Да) (Да) (Да)
Возможность Android Chrome для Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Базовая поддержка (Да) (Да) (Да) (Да) (Да) (Да)

Метки документа и участники

 Внесли вклад в эту страницу: Mingun, teoli, kreshikhin
 Обновлялась последний раз: Mingun,