As you know, newand Object.createperform a hidden action, what we can call setPrototype.
Object.create = function(proto, properties) {
var obj = {};
setPrototype(obj, proto);
Object.defineProperties(obj, properties);
return obj;
}
function fakeNew(Constructor) {
var obj = {};
setPrototype(obj, Constructor.prototype);
Constructor.call(obj);
return obj;
}
, "new Object.create" "Object.create ". .
setPrototype, , , , .
function setPrototype(obj, proto) {
obj.__proto__ = proto;
}