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);

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-18
  • 2021-07-21
  • 2022-12-23
  • 2022-12-23
  • 2021-08-23
猜你喜欢
  • 2021-12-16
  • 2021-10-25
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-27
  • 2022-12-23
相关资源
相似解决方案