码迷,mamicode.com
首页 > Web开发 > 详细

你不知道的JS系列上( 45 ) - 隐式混入

时间:2020-04-07 09:29:41      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:call   var   技术   而且   eth   代码   方法   this   函数   

var Something = {
  cool: function () {
    this.greeting = ‘Hello World‘;
    this.count = this.count ? this.count + 1 : 1;
  }
}
Something.cool();
Something.greeting; // ‘Hello World‘
Something.count; // 1

var Another = {
  cool: function() {
    // 隐式把 Something 混入 Another
    Something.cool.call(this);
  }
};
Another.cool();
Another.greeting; // ‘Hello World‘
Another.count; // 1

通过在构造函数调用或者方法调用中使用 Something.cool.call(this); 实际上 “借用” 了函数 Something.cool() 并在 Another 的上下文调用了它。最终的结果是 Something.cool() 中的赋值操作都会应用到 Another 对象。因此,我们把 Something 的行为 “混入” 到了 Another 中。

 

虽然这类技术利用了 this 的重新绑定功能,大师 Something.cool.call(this) 仍然无法变成相对而且更灵活的引用,所以使用时千万要小心。通常来说,尽量避免这样的结构,以保证代码的整洁和可维护性。

你不知道的JS系列上( 45 ) - 隐式混入

标签:call   var   技术   而且   eth   代码   方法   this   函数   

原文地址:https://www.cnblogs.com/wzndkj/p/12651165.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!