资讯专栏INFORMATION COLUMN

简简单单认识call,apply,bind方法

MSchumi / 2328人阅读

摘要:里面的方法利用里面的函数输出方法输出代表的是对象,为全局变量,全局变量实际上是对象的一个属性。而以方法调用时,值为我们传进去的对象。方法方法实际上是与方法用法相同,只不过方法传进去的参数是以数组形式例如其他与并没有区别。

js里面的call apply bind 方法 利用js里面的function函数
    function example(a,b){
        console.log(a+b)
    }
    example(1,2)

    输出 3
call方法
    var a = 1;
    function example(){
        console.log(this.a)
    }
    输出 1

this代表的是window对象,a为全局变量,全局变量实际上是window对象的一个属性。

    var a = 1;
    var obj = {
        a=9;
    };
    function example(b){
        return this.a+b
    }
    console.log(example.call(obj,2))

输出11,而不是3,实际上,call是改变函数里面的this对象的,如果以example()这种普通方式调用函数的话,this值为我们设置的全局变量。而以call方法调用时,this值为我们传进去的obj对象。

apply方法

apply方法实际上是与call方法用法相同,只不过apply方法传进去的参数是以数组形式例如

example.apply(obj,[2])

其他与call并没有区别。

bind方法

我们用上面的方法使用bind方法

    var a = 1;
    var obj = {
        a=9;
    };
    function example(b){
        return this.a+b
    }
    console.log(example.bind(obj,2))

我们会发现打印出来的是一个函数

ƒ example(b){
            return this.a+b
        }
}

我们再把参数去掉打印一下

console.log(example.bind(obj))
ƒ example(b){
            return this.a+b
        }
}

我们会发现并没有变化

实际上bind是将obj对象与函数进行绑定,如果我们需要使用,我们需要将函数重新创建一个变量,然后调用新的变量就可以了,

var newexample = example();
newexample()

如果我们再进行打印

console.log(newexample(2))

我们会得到11

好了,call apply bind 方法就介绍到这里了,你记住了吗?

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87364.html

相关文章

  • 日积跬步,apply/call/bind 自我实现

    摘要:日常编码中被开发者用来实现对象冒充,也即显示绑定。面试题源码实现,事实上是对基础知识的一个综合考核。原型链终端指向,不会有构造函数,也不会有等属性,这些属性来自。 call/apply/bind 日常编码中被开发者用来实现 对象冒充,也即 显示绑定 this。 面试题:call/apply/bind源码实现,事实上是对 JavaScript 基础知识的一个综合考核。 相关知识点: 作...

    denson 评论0 收藏0
  • 关于javascript中的bindcallapply等函数的用法

    摘要:其实它们都很简单,但是在处理一些与相关的函数的时候,用来改变函数中的指向,却是必不可少的工具,所以必须掌握好它们的用法。 关于javascript中的bind、call、apply等函数的用法 我GitHub上的菜鸟仓库地址: 点击跳转查看其他相关文章 文章在我的博客上的地址: 点击跳转         前面的文章已经说到this的指向了,那么这篇文章就要说一说和this相关的三个...

    lordharrd 评论0 收藏0
  • 深入call apply bind

    摘要:众所周知,这三个函数都是改变执行上下文的,那么我们来捋一捋,这些函数内部到底做了什么。 前言 稍微翻了一下call,apply, bind 的各种论坛上的文章, 发现讲的都太浅了,大部分都只讲了个用法, 对于实现的原理却都没有提,因此,在这里,我写下这篇文章, 希望能让大家认识到原理所在。 众所周知, 这三个函数都是改变执行上下文的 , 那么我们来捋一捋,这些函数内部到底做了什么。 c...

    Alex 评论0 收藏0
  • call() 与 apply() 和 bind()

    摘要:但是当构造函数显示返回一个对象时就会将这个对象赋值给变量,的使用则无效。将参数全都传入,它会把参数作为数组传入。 首先了解this 如果想用好这几个方法,需要先了解this被调用方式不同而导致值不同的各种情况,然后就会认识到使用这几个方法的原因在哪里。(可以指定this的值)全局上下文中this指向全局对象,函数上下文this取决于被调用的方式 例: 在非严格模式下,全局调用函数thi...

    DTeam 评论0 收藏0
  • 面试官问:JS的this指向

    摘要:之前写过一篇文章面试官问能否模拟实现的和方法就是利用对象上的函数指向这个对象,来模拟实现和的。虽然实际使用时不会显示返回,但面试官会问到。非严格模式下,和,指向全局对象 前言 面试官出很多考题,基本都会变着方式来考察this指向,看候选人对JS基础知识是否扎实。读者可以先拉到底部看总结,再谷歌(或各技术平台)搜索几篇类似文章,看笔者写的文章和别人有什么不同(欢迎在评论区评论不同之处),...

    warnerwu 评论0 收藏0

发表评论

0条评论

MSchumi

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<