call只能改变this的指向,而使用new对象不仅会自动调用call方法改变这个对象的this指向,而且还会继承构造函数的原型。
var fn = function(a){
this.a = a;
}
fn.prototype = {
draw:function(){
console.log(this.a);
}
}
var obj = new fn(10);
obj.draw(); //10
在obj在没有找到draw函数,所以它向它的原型链中查找。
简单版
var fn = function(a){
this.a = a;
}
var obj = new fn();
相当于这样
var fn = function(a){
this.a = a;
}
var obj = {};
继承
obj.__proto__ = fn.prototype;
改变this指向
fn.call(obj);