构造函数:
可以new的函数是构造函数
实例:
将构造函数new之后得到的就是实例,或者o1 = {name:’o1’}这样的写法
- 构造函数是可以使用new运算符生成一个实例
- 构造函数也是函数,函数具有prototype
- prototype是浏览器附加上的原型对象
- 原型对象中的构造器constructor就指向到声明的构造函数
- 实例的__proto指向的构造函数的原型对象prototype
instanceof
instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。(也就是一直在原型链上向上查找)
instanceof 是用来判断实例对象的__proto__
和构造函数的prototype是不是引用同一个地址
可以用constructor来获取声明的构造函数比用instanceof 判断prototype在原型链中是否存在更加严谨
var M = function(){this.name = 'o2'};
var o2 = new M();
o2 instanceof M // true
o2 instanceof Object // true
o2.__proto__ === M.prototype // true
M.prototype.__proto__ === Object.prototype // true
o2.__proto__.constructor === M //true
o2.__proto__.constructor === Object // false