摘要:中是在运行的时候进行绑定的,这是中关键字具备多重含义的本质原因。所以,中的可以是全局对象当前对象或者是任意对象。
Js中this是在运行的时候进行绑定的,这是Js中this关键字具备多重含义的本质原因。所以,Js中的this可以是全局对象、当前对象或者是任意对象。这完全取决于函数的调用方式,而js中函数的调用有以下几种方式:
作为对象方法调用
作为函数调用
作为构造函数调用
使用apply或call调用
根据以下判断,判别this分别指向什么:
1.函数调用是用new进行调用的吗?如果是,则this指向新创建的对象,否则进行下一步判断
2.判断该函数是否是用dot(.)进行调用的,如果是的话,那么this指向dot(.)之前的对象;否则this指向全局对象window.
四种调用方式中this的指向
函数调用模式中this指全局对象(window)
var f1 = function() { alert("这个是函数调用"); alert(this);//window }; f1();
方法调用
由对象调用方法(当对象为null的时候,函数进行函数调用模式,当对象不为null的时候,函数实现方法调用模式)
在方法调用模式中 this 表示当前对象
var o = {name:"小明"}; o.say = function() { alert(this.name);//小明 alert(this);//o }; o.say();
任何一个函数放在new 后面就是构造函数,构造函数的this是构造函数返回的对象,构造函数的return发生变化,如果返回的是对象,直接返回,否则返回创建出来的对象
如
var Person = function(n) { this.name = n; return { name:"男", get:function(){ console.log(this.name); }; // return 123; } var p = new Person();
函数的apply调用模式和call调用模式
语法:
函数名.apply(对象, [参数数组]);
函数名.call(对象, 参数列表);
如
var func = function() { this.name = "小明"; this.say = function(){alert(this.name + "学习好");}; }; func.apply(null); // 等价于 func();
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/93606.html
摘要:在全局对象中调用,自然读取的是全局对象的值构造器调用说明作为构造器调用时,指向返回的这个对象。最直观的表现就是,去看一些优秀框架的源代码时,不再是被绕的晕乎乎的。 学习起因: 在之前的JavaScript学习中,this,call,apply总是让我感到迷惑,但是他们的运用又非常的广泛。遂专门花了一天,来弄懂JavaScript的this,call,apply。中途参考的书籍也很多,以...
摘要:一等公民对象函数在提指向问题之前,肯定是有必要说明一等公民对象,既然是对象,那么就能像普通的值一样传递。在普通浏览器中指向的是在中指向的是全局对象全局环境中或者模块环境中。即指向或者的第一个参数。第二条规则,指向的不是原文链接 1. 一等公民对象——函数 在提this指向问题之前,肯定是有必要说明一等公民对象function ,既然function是对象,那么就能像普通的值一样传递。嗯...
摘要:出现箭头函数的时候,指向为定义时的上下文对象而非指向时,并且不能被改变首先我们先看一个例子由上面的例子我们可以看出来此时指针在用改变了之后指向的依然是全局对象非严格浏览器环境中是而非。 javascript基础之this指针 越往后面学越发现基础的重要性,所以打算重新过一遍基础,之后出几个vue和react的实战教程。ok,严归正传。 首先什么是this this是执行上下文创建时确定...
摘要:再来看一个小的示例淘宝腾讯淘宝为什么输出的依然是淘宝呢调用的是对象中的方法,方法里面有一个定时器,而定时器的一个参数是这里的指的就是的对象,然后方法里面有调用了,但是定时器中的指的是对象,所以最终调用的是对象中。 1.看前热身 看一段代码 var name = javascript; var obj = { name:js, foo:f...
摘要:第四点也要着重讲下,记住构造函数被操作,要让正常作用最好不能在构造函数里 4) this、new、call和apply的相关问题 讲解this指针的原理是个很复杂的问题,如果我们从javascript里this的实现机制来说明this,很多朋友可能会越来越糊涂,因此本篇打算换一个思路从应用的角度来讲解this指针,从这个角度理解this指针更加有现实意义。 下面我们看看在ja...
摘要:也就是说当返回的函数作为构造函数的时候,时指定的值会失效,但传入的参数依然生效。构造函数效果的优化实现但是在这个写法中,我们直接将,我们直接修改的时候,也会直接修改函数的。 JavaScript深入系列第十一篇,通过bind函数的模拟实现,带大家真正了解bind的特性 bind 一句话介绍 bind: bind() 方法会创建一个新函数。当这个新函数被调用时,bind() 的第一个参数...
阅读 751·2021-10-14 09:43
阅读 2075·2021-09-30 09:48
阅读 3444·2021-09-08 09:45
阅读 1092·2021-09-02 15:41
阅读 1880·2021-08-26 14:15
阅读 773·2021-08-03 14:04
阅读 2974·2019-08-30 15:56
阅读 3073·2019-08-30 15:52