This指向~改变This指向的方法

函数中的this是在运行时候决定的,而不是函数定义时
全局环境中的this指window
其他函数中的this指向调用它的对象
使用call和apply改变函数中this的具体指向
apply的参数需要放在一个数组里面
bind改变this指向 返回函数调用执行
三个方法都是原型上
Function.prototype.call()
Function.prototype.apply()
Function.prototype.bind()

改变this指向call和apply的使用方法
var bc = {
            name: 'bc',
            say: function (a, b, c, e, f, g) {
                console.log(this.name, a, b, c, e, f, g)
            }
        }
var xy = {
            name: 'xy',
            say: function () {
                
            }

        }

   bc.say.call(xy, 1, 2);
        // 1. 立即执行
        // 2. 第一个参数: 对象
        // 3. 后面都是实参
apply()方法的应用 参数需要传入一个数组
var obj1 = {
                name:'zhangsan',
                returName:function(){
                    return this.name;
                }
            }
            var obj2 = {
                name:'lisimao',
                returName:function(str){
                    return this.name+str;
                }
            }
            console.log(obj2.returName.apply(obj1,['666']))
bind在使用形式上合上面两个call和apply一样只不过不立即调用,经常在定时器,或其他回调函数等不立即调用的函数改变this指向时使用
setTimeout(function(){}.bind(obj),1000);
该匿名函数在1000毫秒后调用,使用bind改变this指向又不立即调用,符合该使用场景
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 面试官出很多考题,基本都会变着方式来考察this指向,看候选人对JS基础知识是否扎实。读者可以先拉到底部看总...
    若川i阅读 1,141评论 0 10
  • 参考《JavaScript设计模式与开发实践》 this 跟别的语言大相径庭的是,JavaScript的this总...
    16manman阅读 584评论 0 0
  • 1.概念 在JavaScript中,this 是指当前函数中正在执行的上下文环境,因为这门语言拥有四种不同的函数调...
    BluesCurry阅读 1,159评论 0 2
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,665评论 0 5
  • 烟雨之歌 我心里有一簇花, 那是迎着烈日而生的花, 它的芬芳比世间任何美酒都要浓郁, 毫无防备的沁进人的胸膛。 琉...
    美文古风_柒色阅读 375评论 0 1