原型

var o1 = {name: 'o1'};
var o2 = new Object({name: 'o2'});
var M = function(name) {this.name = name};
var o3 = new M('o3');
var o4 = Object.create({name: 'o4'})
M.prototype.say = function() {
console.log('say hi');
}
var o5 = new M();
var p = {name: 'o6'};
var o7 = Object.create(p);
new 方法 使用 Object.create
function new2(M) {
let o = Object.create(M.prototype);
let r = M.call(o);
if (typeof r === 'object') {
return r;
}
return o;
}
new 方法,改变原型链
function new3(M) {
let o = {};
o.__proto__ = Object.create(M.prototype);
let r = M.call(o);
if (typeof r === 'object') {
return r;
}
return o;
}