当前位置:   jquery > 正文

Javascript"this"范围根据调用的方式给出不同的结果

javascript,scope,this,https,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

所有,

这是代码:

var Person = function (name) {

  this.name = name;

  this.printName = function(){
    console.log("My name is " + this.name);
  }

};


var p = new Person("Steve");

var funcRef = p["printName"];

p.printName();//Works

p["printName"]();//Works
funcRef();//returns incorrect value

在这里找到一个有用的例子:http://plnkr.co/edit/57LS6oXPfqccAWf6uqQV?p = preview

我的问题是最后两个之间有什么区别?我以相同的方式访问对象方法,唯一的区别是它被调用的方式.

为什么会返回差异结果?

我第一次在javascript中遇到过这个问题.我知道这是在一个不同的范围,但我不知道它是如何与我想要了解的对象分离.

谢谢

史蒂夫



1> Magus..:

this当你直接在对象上调用函数时,javascript绑定关键字.

随着test.fn(),this将在test里面fn.与...相同test['fn']().但如果你这样做var fn = test.fn; fn(),this将成为全局根(window在浏览器中)fn.

你可以强制this内部这样的函数:var fn = test.fn.bind(test);

更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/jquery/detail/13516
推荐阅读
  • 如何解决《使用原型[javascript]的未定义结果》经验,为你挑选了0个好方法。javascript,prototype,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,... [详细]

  • 如何解决《匿名函数VSconst函数--javascript》经验,为你挑选了1个好方法。javascript,const,function,https,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,... [详细]

  • 如何解决《JavaScript-ForEach》经验,为你挑选了1个好方法。javascript,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,... [详细]

  • 如何解决《Javascript,基本关联数组》经验,为你挑选了1个好方法。javascript,associative-array,https,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成... [详细]

  • 如何解决《jQuery/javascriptevent.timestamp不起作用》经验,为你挑选了1个好方法。javascript,jquery,events,timestamp,chrome,firefox,安全,go,DevBox,在... [详细]

  • 如何解决《函数尾部的()中的参数是什么意思?(JavaScript)的》经验,为你挑选了1个好方法。javascript,jquery,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,uni... [详细]

  • 如何解决《Javascript:避免重新加载窗口》经验,为你挑选了1个好方法。javascript,html,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前... [详细]

相关标签
  

闽ICP备14008679号