博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
this
阅读量:5155 次
发布时间:2019-06-13

本文共 901 字,大约阅读时间需要 3 分钟。

含义: this指向函数运行时的执行环境。而这个执行环境跟函数的声明没关系

 

列子:

var obj = {  foo: function () { console.log(this.bar) },  bar: 1};var foo = obj.foo;var bar = 2;obj.foo()  //1foo(); // 2

obj.foo()  foo函数运行时所处的环境是 obj环境 而 foo()函数运行时所处的环境是全局环境 也就是window环境。所以  方式1: this 执行了 函数运行时的环境obj 而方式2执行了函数运行时的环境window环境。那么

方式1取到的this.bar ===> obj.bar  方式2取到的this.bar ===> window.bar。

 

改变this指向:(显示绑定)

var obj = {  foo: function () { console.log(this.bar) },  bar: 1};var foo = obj.foo;var bar = 2;obj.foo()  //1foo.call(obj); // 1

 首先概括一下 call方法: 函数也是对象,是对象也会有属性和方法。call方法就是函数的一个 方法,这个方法是继承于Function.prototype  所有开发者声明的函数 都是属于Function的实例 fn.constructor === Function。

call:把第一个参数,作为该函数运行时的上下文或执行环境。也就是说 foo.call(obj) 运行时的执行环境即this 已经变为obj了 所以输出了 1。

类似方法: call apply bind 

不同点: call(context,参数1,参数2)

    apply(context,[参数1,参数2]) 

    bind(context,参数1,参数2)();  //函数不会自执行 需要手动调用

 

完毕!仅仅作为本人的学习总结!

 

转载于:https://www.cnblogs.com/yunnex-xw/p/9772826.html

你可能感兴趣的文章
【C语言项目】贪吃蛇游戏(下)
查看>>
DevExpress第三方控件汉化的全部代码和使用方法
查看>>
二分查找算法(C#实现)
查看>>
vue项目中开启Eslint碰到的一些问题及其规范
查看>>
ES terms多值搜索及范围过滤深入剖析-搜索系统线上实战
查看>>
大咖专栏 | DevOps组织如何有效地实施MSA
查看>>
工厂模式
查看>>
忍不住了, 和大家聊聊怎么写简历吧, 关于简历的深度思考
查看>>
高并发编程
查看>>
(前端)html与css css 19、tab栏
查看>>
一起来学习.net core程序使用中介者模式:MediatR插件
查看>>
debian9 设置
查看>>
5句话搞定ES5作用域
查看>>
Build tool
查看>>
php 小坑记录
查看>>
2018.7.28 二叉树的遍历规则(前序遍历、后序遍历、中序遍历)
查看>>
通过 poi 导入 Excel代码
查看>>
《CSS基础教程》 读书笔记三
查看>>
洛谷P4482 [BJWC2018]Border 的四种求法 字符串,SAM,线段树合并,线段树,树链剖分,DSU on Tree...
查看>>
PHP安全新闻早8点_1127
查看>>