js中call()方法的使用以及说明

代码实力1

window.color = 'red';

document.color = 'blue',

let obj = {
  color : 'pink'
}

function createColor (color){
  this.color = color;
}
let c = new createColor('white');

function showColor(){
  console.log(this.color)
}
showColor() //默认this就是window  red
showColor.call(window) //  red
showColor.call(cocument) //  blue
showColor.call(obj) //  pink
showColor.call(c) //  white

代码实例2:

var elJson = {
  name:'Web前端',
  callBack:function(){
    console.log(this.name)  
  }
};
var newJson = {
  name:'javaScript is cool'
};

//直接调用
elJson.callBack() //结果是Web前端

//而使用call()方法调用
elJson.callBack.call(newJson ) //结果是javaScript is cool;
解释

call()改变了this的指向,刚开始this的指向是elJson这个对象,而当使用call()this就不在指向这个对象了,而是新的newJson这个对象

代码实例3

利用构造对象方式

  var newJson = {
      name:'javaScript is cool'
    };
    function createJs(name){
        this.name = name;
        this.callBack = function(){
            console.log(this.name);
        }
    }
    var cat = new createJs('Web前端');
    cat.callBack(); //结果是Web前端
    cat.callBack.call(newJson) //结果是javaScript is cool;

两种方法的原理是一样的,只是这一种利用构造对象;
其实在js中var 一个变量都是在顶层对象window中添加了一个属性而已

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,385评论 2 17
  • title: js面向对象date: 2017年8月17日 18:58:05updated: 2017年8月27日...
    lu900618阅读 3,663评论 0 2
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,535评论 0 4
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,399评论 1 10
  • 昨天晚上和宿友斗完地主后,洗了个舒服的温水澡,因为是周末所以想找点东西出来消磨时间。我是个一穿白色...
    簡純阅读 2,795评论 0 0