作家
登录

JavaScript 中的 this 全面解析

作者: 来源: 2017-05-24 09:10:29 阅读 我要评论

-- 调用地位! 
  •  
  • var obj = { 
  •     a: 2, 
  •     foo: foo 
  •  
  • var a = "oops, global"; // a是全局对象的属性 
  •  
  • doFoo( obj.foo ); // "oops, global" 
  • 参数传递其实就是一种隐式赋值,是以我们传入函数时也会被隐式赋值,所以结不雅和上一个例子一样,如不雅把函数传入说话内置的函数而不是传入本身声明的函数(如setTimeout等),结不雅也是一样的

    显式绑定

    硬绑定

    1. function foo( something ) { 
    2.     console.log( this.a, something) 
    3.     return this.a + something 
    4.  
    5. var obj = { 
    6.     a: 2 
    7.  
    8. var bar = function() { 
    9.     return foo.apply( obj, arguments) 
    10.  
    11. var b = bar(3); // 2 3 
    12. console.log(b); // 5 

    这里简单做一下解释: 在bar函数中,foo应用apply函数绑定了obj,也就是说foo中的this将指向obj,与此同时,应用arguments(不限制传入参数的数量)作为参数传入foo函数中;所以在运行bar(3)的时刻,起首输出obj.a也就是2和传入的3,然后foo返回了两者的相加值,所以b的值为5

    同样,本例也可以应用bind:

    1. function foo( something ) { 
    2.     console.log( this.a, something) 
    3.     return this.a + something 
    4.  
    5. var obj = { 
    6.     a: 2 
    7.  
    8. var bar = foo.bind(obj) 
    9.  
    10. var b = bar(3); // 2 3 
    11. console.log(b); // 5 

    new绑定

    在传统面弦栏侥说话中,应用new初始化类的时刻会挪用览鲂的构造函数,然则JS中new的机制实际上和面向类和说话完全不合。

    应用new来调用函数,或者说产生构造函数调用时,会主动履行下面的操作:

    • 创建(或者说构造)一个全新的对象
    • 这个新对象会被履行[[Prototype]]连接
    • 这个新对象会绑定到函数调用的this
    • 如不雅函数没有返回其他对象,那么new表达式中的函数会主动返回这个新对象 如:

    简单的说,就是指定this,如:call、apply、bind、new绑定等

    1. function foo(a){ 
    2.     this.a = a 
    3.  
    4. var bar = new foo(2); 
    5. console.log(bar.a); // 2 

    应用new来调用foo(…)时,我们会结垢荷琐新对象并把它绑定到foo(…)调用中的this上。new是最后一种可以影响函数调用时this绑定行动的办法,我们称之为new绑定。

    this的优先级

    毫无疑问,默认绑定的优先级是四条规矩中最低的,所以我们可以先不推敲它。

    1. function foo(a){ 
    2.     console.log(this.a) 
    3.  
    4. var obj1 = { 

        推荐阅读

        路由器密码忘了怎么办 自己动手不求人

      暗码忘了怎么办生活中路由器应用时光一长,不免产生问题,我们想要更改无线暗码、信道等无线路由器的设置,>>>详细阅读


      本文标题:JavaScript 中的 this 全面解析

      地址:http://www.17bianji.com/lsqh/35377.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)