一、创建对象有几种方法
//方式一:字面量
var o1 = {name: 'o1'};
var o11 = new Object({name:'o11'})
//方式二:通过构造函数
var M = function(name){this.name = name}
var o2 = new M('o2');
//方式三:
var P = {name: 'o3'};
var o3 = Object.create(P)
二、原型、构造函数、实例、原型链
三、instanceof的原理
实例对象是判断实例对象的_proto_和构造函数的prototype是不是引用的同一个对象。可以用constructor来判断实例对象是哪个构造函数的实例对象。
四、new运算符
new运算符背后的原理:
var new2 = function(func){
var o = Object.create(func.prototype);
var k = func.call(o);
if(typeof k === 'object'){
return k;
} else {
return o
}
}