Иерархия встроенных объектов 
		
		
		
		Друзья, разбираюсь с прототипами. Подскажите почему так: 
	1. Выходит у встроенных конструкторов Object и Function одинаковый прототип alert( Object.__proto__ == Function.__proto__ ); // true 2. У Function вообще .__proto__ и .prototype содержат ссылку на один и тот же объект alert( Function.__proto__ == Function.prototype ); // true 3. Почему: Function.prototype- функция (и для чего она используется в качестве функции???) Object.prototype- обычный объект  | 
	
		
 __proto__ - это, грубо говоря, ссылка на prototype конструктора. 
	Смотреть __proto__ у встроенных классов никакого смысла нет, т.к. там всегда будет одно и то же.  | 
	
		
 Цитата: 
	
 alert(Function.constructor === Object.constructor) alert(Function.constructor === Function)Мы можем рассматривать Object, Function, и другие классы, например, Array или собственный класс Person, как представителей класса Function. Например, класс Person можно описать так... 
function Person(name, age) {
	this.name = name;
	this.age = age;
}
 и такой класс тоже является представителем класса Function. Ведь такая запись является, в некотором смысле, синтаксическим сахаром для следующего кода...
var Person = new Function("name", "age", "this.name = name; this.age = age;");
По умолчанию все классы наследуют от Object. Например, рассмотрев массив, мы увидим, что он является представителем класса Array и наследует от Object. alert(["a","b"].constructor)// на самом деле оно пошло смотреть ["a","b"].__proto__.constructor alert(["a","b"].__proto__.constructor) alert(["a","b"].__proto__.__proto__.constructor) alert(["a","b"] instanceof Array && ["a","b"] instanceof Object) Но мы можем захотеть не наследовать от Object, вообще не наследовать. 
function Empty() {}
Empty.prototype = {
	constructor: Empty,
	__proto__: null
};
// если взглянуть в консоль, то видно, что у представителя класса Empty нет свойств, которые обычно наследуются от Object
console.log(new Empty());
Цитата: 
	
 alert(Function.prototype === Function.__proto__); alert(Function.__proto__.constructor === Function); alert(Function instanceof Function === true) Цитата: 
	
 Вот схема, показывающая, отношения объекта и функции. ![]() Чтобы узнать собственные свойства объекта, используйте статичный метод Object.getOwnPropertyNames console.log(Object.getOwnPropertyNames(["a","b"])); Чтобы посмотреть, на что ссылается внутреннее свойство [[Prototype]], используйте статичный метод Object.getPrototypeOf console.log(Object.getOwnPropertyNames(Object.getPrototypeOf(["a","b"]))); Цитата: 
	
 
console.log(Uint16Array.prototype.__proto__.constructor);
console.log(Float64Array.prototype.__proto__.constructor);
console.log((function*(){}).constructor.prototype.__proto__.constructor);
console.log((async function*(){}).constructor.prototype.__proto__.constructor);
console.log((async ()=>{}).constructor.prototype.__proto__.constructor);
 | 
| Часовой пояс GMT +3, время: 12:48. |