---
title: Object.prototype
slug: conflicting/Web/JavaScript/Reference/Global_Objects/Object
tags:
- JavaScript
- Object
- Property
- Reference
translation_of: Web/JavaScript/Reference/Global_Objects/Object
translation_of_original: Web/JavaScript/Reference/Global_Objects/Object/prototype
original_slug: Web/JavaScript/Reference/Global_Objects/Object/prototype
---
{{JSRef("Global_Objects", "Object")}}
Сводка
Свойство Object.prototype
представляет объект прототипа {{jsxref("Global_Objects/Object", "Object")}}.
{{js_property_attributes(0, 0, 0)}}
Описание
Все объекты в JavaScript являются потомками {{jsxref("Global_Objects/Object", "Object")}}; все объекты наследуют методы и свойства из прототипа объекта Object.prototype
, хотя они и могут быть переопределены (за исключением объекта Object
с прототипом null
, то есть, созданным вызовом Object.create(null)
). Например, прототипы других конструкторов переопределяют свойство constructor
и предоставляют свои собственные методы {{jsxref("Object.prototype.toString()", "toString()")}}. Изменения в объекте прототипа {{jsxref("Global_Objects/Object", "Object")}} распространяются на все объекты до тех пор, пока свойства и методы, учитывающие эти изменения, не переопределяются дальше по цепочке прототипов.
Свойства
- {{jsxref("Object.prototype.constructor")}}
- Определяет функцию, создающую прототип объекта.
- {{jsxref("Object.proto", "Object.prototype.__proto__")}} {{non-standard_inline}}
- Указывает на объект, который использовался в качестве прототипа при инстанцировании объекта.
- {{jsxref("Object.noSuchMethod", "Object.prototype.__noSuchMethod__")}} {{non-standard_inline}}
- Позволяет определить функцию, выполняющуюся при вызове в качестве метода неопределённого члена объекта.
{{jsxref("Object.count", "Object.prototype.__count__")}} {{obsolete_inline}}
Использовалось для возврата количества перечисляемых свойств, определённых напрямую на пользовательском объекте, но было удалено.
{{jsxref("Object.parent", "Object.prototype.__parent__")}} {{obsolete_inline}}
Использовалось для указания контекста объекта, но было удалено.
Методы
- {{jsxref("Object.defineGetter", "Object.prototype.__defineGetter__()")}} {{non-standard_inline}} {{deprecated_inline}}
- Ассоциирует функцию со свойством, которое, при доступе к нему, выполняет эту функцию и возвращает её возвращаемое значение.
- {{jsxref("Object.defineSetter", "Object.prototype.__defineSetter__()")}} {{non-standard_inline}} {{deprecated_inline}}
- Ассоциирует функцию со свойством, которое, при его установке, выполняет эту функцию, изменяющую свойство.
- {{jsxref("Object.lookupGetter", "Object.prototype.__lookupGetter__()")}} {{non-standard_inline}} {{deprecated_inline}}
- Возвращает функцию, ассоциированную с указанным свойством методом {{jsxref("Object.defineGetter", "__defineGetter__")}}.
- {{jsxref("Object.lookupSetter", "Object.prototype.__lookupSetter__()")}} {{non-standard_inline}} {{deprecated_inline}}
- Возвращает функцию, ассоциированную с указанным свойством методом {{jsxref("Object.defineSetter", "__defineSetter__")}}.
- {{jsxref("Object.prototype.hasOwnProperty()")}}
- Возвращает логическое значение, указывающее, содержит ли указанное свойство непосредственно объект, или он унаследовал его по цепочке прототипов.
- {{jsxref("Object.prototype.isPrototypeOf()")}}
- Возвращает логическое значение, указывающее, состоит ли указанный объект в цепочке прототипов объекта, на котором был вызван данный метод.
- {{jsxref("Object.prototype.propertyIsEnumerable()")}}
- Возвращает логическое значение, указывающее, установлен ли внутренний атрибут ECMAScript DontEnum.
- {{jsxref("Object.prototype.toSource()")}} {{non-standard_inline}}
- Возвращает строку, содержащую исходный код объекта в литеральной форме, представляющего объект, на котором был вызван данный метод; вы можете использовать это значение для создания нового объекта.
- {{jsxref("Object.prototype.toLocaleString()")}}
- Вызывает {{jsxref("Object.toString", "toString()")}}.
- {{jsxref("Object.prototype.toString()")}}
- Возвращает строковое представление объекта.
- {{jsxref("Object.prototype.unwatch()")}} {{non-standard_inline}}
- Удаляет точку наблюдения (watchpoint) со свойства объекта.
- {{jsxref("Object.prototype.valueOf()")}}
- Возвращает значение примитива указанного объекта.
- {{jsxref("Object.prototype.watch()")}} {{non-standard_inline}}
- Добавляет точку наблюдения (watchpoint) к свойству объекта.
{{jsxref("Object.prototype.eval()")}} {{obsolete_inline}}
Использовался для вычисления строки с JavaScript-кодом в контексте указанного объекта, но был удалён.
Примеры
Поскольку Javascript, строго говоря, не имеет объекты подклассов, прототип является полезным обходным путём создания объекта «базового класса» из определённых функций, которые выступают в роли объектов. Например:
var Person = function(name) {
this.name = name;
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. |
{{SpecName('ES5.1', '#sec-15.2.3.1', 'Object.prototype')}} |
{{Spec2('ES5.1')}} |
|
{{SpecName('ES6', '#sec-object.prototype', 'Object.prototype')}} |
{{Spec2('ES6')}} |
|
Совместимость с браузерами
{{CompatibilityTable}}
Возможность |
Chrome |
Firefox (Gecko) |
Internet Explorer |
Opera |
Safari |
Базовая поддержка |
{{CompatVersionUnknown}} |
{{CompatVersionUnknown}} |
{{CompatVersionUnknown}} |
{{CompatVersionUnknown}} |
{{CompatVersionUnknown}} |
Возможность |
Android |
Chrome для Android |
Firefox Mobile (Gecko) |
IE Mobile |
Opera Mobile |
Safari Mobile |
Базовая поддержка |
{{CompatVersionUnknown}} |
{{CompatVersionUnknown}} |
{{CompatVersionUnknown}} |
{{CompatVersionUnknown}} |
{{CompatVersionUnknown}} |
{{CompatVersionUnknown}} |