FED

©FrontEndDev.org
2015 - 2024
web@2.22.0 api@2.20.0

前端进阶计划第44周作业

2015年第44周——面向对象

call/apply/bind

var f = function(){
    alert(this.name);
    return f;
};

f();
f.call({name: 'a'});
f.call({name: 'a'}).call({name: 'b'});

var f1 = f.bind({name: 'c'});

f1();
f1.call({name: 'd'});
f1.call({name: 'd'}).call({name: 'e'});

var f2 = f1.bind({name: 'f'});

f2();
f2.call({name: 'g'});
f2.call({name: 'g'}).call({name: 'h'});

手动实现bind

尽可能与Function.prototype.bind保持一致。

实现构造函数的继承

var People = function(){};
var Father = function(){};

// Father 继承 People
inherit(Father, People);

为什么要进行 JS 模块化

  • 方便多人协作开发
  • 可以复用
  • 更好的依赖管理
  • 防止互相污染
  • 更好的插拔
  • 便于测试