Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
> function Test(){} var q=new Test(); console.log(q.constructor.prototype===q.__proto__);
true
__proto__ равно constructor.prototype?Но так и не нашел простого и понятного объяснения свойства __proto__.


Object.getPrototypeOf = function getPrototypeOf(object) {
return object.__proto__ || (
object.constructor
? object.constructor.prototype
: prototypeOfObject
);
};
a.__proto__=Array.prototypevar MyArray = function () {};
MyArray.prototype = new Array();
var a = new MyArray();
// same as
// var a = {};
// a.__proto__=Array.prototype
a.push(42);
console.log(a.length); // 1
var MyArray = function () {};
MyArray.prototype = new Array();
var a = new MyArray();
a[1] = 123;
a.length; // 0
{0:'x', 1:'y'}, то его можно превратить в «почти-массив» таким кодом:obj.__proto__ = Array.prototype;
obj.length = <длина массива>; // Допустим, в нашей задаче она известна
for (var i in obj), но ее можно заменить методами forEach и т. д. for (var i in obj).var obj = {0:'x', 1:'y'};
obj.length = 2;
console.log( [].slice.call(obj) ); // ['x', 'y' ]
Prototype, proto и оператор new