首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

JS中的this指向问题

上面代码中这是因为在ES5中,全局变量是挂载在顶层对象(浏览器是window)中。 事实上,并不是如此。...第一个参数是undefined或者null,非严格模式下,是指向window。严格模式下,就是指向第一个参数。后文详细解释。 经常有这类代码(回调函数),其实也是普通函数调用模式。...student.doSth.call(student); // 用call类比则为: student.other.doSth.call(student); 但往往会有以下场景,把对象中的函数赋值成一个变量了...根据参数thisArg的描述,可以知道,call就是改变函数中的this指向为thisArg,并且执行这个函数,这也就使JS灵活很多。严格模式下,thisArg是原始值是值类型,也就是原始值。...非严格模式下,null和undefined,指向全局对象(浏览器中是window),其余值指向被new Object()包装的对象。 对象上的函数调用:绑定到那个对象。

1.3K30

C语言 | 指向结构体变量的指针变量

例40:C语言实现通过指向结构体变量的指针变量变量输出结构体变量中的信息。...解题思路:在主函数中声明了struct student类型,然后定义了一个struct student类型的变量s_1,又定义了一个指针变量p,它指向一个struct student类型的对象,将结构体变量...s_1的起始地址赋给指针变量p,也就是使p指向s_1,然后对s_1的各个成员赋值。...    struct student *p;//定义结构体指针变量    p=&s_1;//将s_1得地址赋给指针变量    s_1.num=10010;//赋值    strcpy(s_1.name,...思考两个问题,怎么对结构体变量成员赋值?怎么通过指向结构体变量的指针访问结构体变量中成员? C语言 | 通过指向结构体变量的指针变量输出结构体变量中的信息 更多案例可以go公众号:C语言入门到精通

1.8K2218

js中this到底指向什么?

js中this到底指向什么? 一、前言 前段时间,公司让我改一个界面,我心想改个界面还不简单吗?结果呃,我低估了这颗炸弹的威力。 好吧是我太菜,总结一下,这个this的指向问题。...在js中,this的指向在定义函数的时候是确定不了的,只有在使用这个函数的时候才能确定this的指向。 一般来说在使用时,谁调用的这个函数,函数中的this就指向它。...对象中的函数,在运行时this指向了me这个对象。...在js中,this的指向在定义函数的时候是确定不了的,只有在使用这个函数的时候才能确定this的指向。 这样,我稍微能理解点了,简单的来说就是谁调用的这个函数,函数里面的this就指向谁。...所以这时候,this的真正指向就是返回的那个对象。

90710

C++指向结构体变量的指针

C++通过指向结构体变量的指针引用结构体变量中的成员 C++中,一个结构体变量的指针就是该变量所占据的内存段的起始地址,指针变量也可以用来指向结构体数组中的元素。 ...C++提供了指向结构体变量的运算符->,例如: p->num;//表示指针p当前指向的结构体变量中的成员num p->num 和(*  p).num 等价,同样,p->namep->name等价于(*p...p->n;//得到p指向的结构体变量中的成员n值。 p->n++;//得到p指向的结构体变量中的成员n的值,用完该值后使它加1。...++p->n;//得到p指向的结构体变量中的成员n的值,并使之加1,然后再使用它。 经典案例:C++指向结构体变量的指针。...C++指向结构体变量的指针 更多案例可以go公众号:C语言入门到精通

2.7K118

js中关于this指向的训练题

this指向js开发中必须掌握的知识,今天我们就用一道题目来看看你的基础。 ? 各位认为会输出什么呢?请大家先思考不要直接去运行看答案。 实际上会输出:5和2。...(1):第一行fn(),这个毫无疑问,this指向的是window,所以length自然输出5,大家不要看到fn()在obj对象里面调用,就把this认为指向了obj,这是非常错误的; this指向谁,...第二行arguments[0]();大家都知道这个对象是获取函数参数列表的,我们调用method一共传入了两个参数,第一个为fn函数,第二个则是10这个数字,arguments[0]则取了fn这个函数变量指针...所以,这里大家可以理解为:arguments[0]()=arguments.fn(); this对象就是指向了arguments,length也自然是2了。...大家明白了吗,这道题对于this指向还是比较经典的题目,如果这道题可以独立做出来,证明this指向这块,你基本上是过关的。

78910

关于JS中this指向问题的探究

写在前面 本篇文章的所有例子来源都是《JS设计模式与开发实践》这本书,写这篇文章之前也去查阅了很多关于this指向问题的探讨,包括但不仅仅有像阮一峰老师,还有很多的博主的帖子,还是决定写这篇文章有以下几个原因...,第一,加深自己的理解,重新理一遍关于这方面的知识,第二,我尽可能的使用通俗简单的说辞进行解释 力求让更多的人明白这个东西,第三,this是js中的一个关键字,很有必要单独拿出来写一篇文章。...js中的this this js中的this总是指向一个对象,也就是一个obj,但是具体指向的是哪一个obj是根据具体的运行时函数的执行环境动态绑定的,而不是函数被声明的环境!...,也就是windows,因为在js中全局对象就是windows window.name = "globalName" var getName = function () {...JS中很多别的不好理解的概念差不多,用的多了就明白了为什么那么写,很多的时候我们看到一个错,就知道需要使用let that = this类似这样的代码块解决,究其原因是他很理解错误的原因吗?

1.4K31

面试官问:JS的this指向

1.面试官问:能否模拟实现JS的new操作符 2.面试官问:能否模拟实现JS的bind方法 3.面试官问:能否模拟实现JS的call和apply方法 4.面试官问:JS的this指向 5.面试官问:JS...的继承 面试官出很多考题,基本都会变着方式来考察this指向,看候选人对JS基础知识是否扎实。...上面代码中这是因为在ES5中,全局变量是挂载在顶层对象(浏览器是window)中。事实上,并不是如此。...之前也写过一篇文章:面试官问:能否模拟实现JS的bind方法就是利用call和apply指向这个thisArg参数,来模拟实现bind的。感兴趣的读者思考如何实现,再去看看笔者的实现。...之前也写了一篇文章面试官问:能否模拟实现JS的new操作符,是使用apply来把this指向到生成的新生成的对象上。感兴趣的读者思考如何实现,再去看看笔者的实现。

73120

一文读懂Js中的this指向

只要函数被赋给另一个变量,this的指向就会变。...var obj = { foo: 5 };上面的代码将一个对象赋值给变量obj。JavaScript 引擎会先在内存里面,生成一个对象{ foo: 5 },然后把这个对象的内存地址赋值给变量obj。...var f = function () { console.log(x);};上面代码中,函数体里面使用了变量x。该变量由运行环境提供。...原因跟上一段的多层this是一样的,就是内层的this不指向外部,而指向顶层对象。解决这个问题的一种方法,就是前面提到的,使用中间变量固定this。...这是因为getTime()方法内部的this,绑定Date对象的实例,赋给变量print以后,内部的this已经不指向Date对象的实例了。bind()方法可以解决这个问题。

85800

JS 中 this 在各个场景下的指向

函数的作用域:是在函数体中可访问的变量、对象和函数的集合。 2.函数调用 当一个表达式为函数接着一个(,一些用逗号分隔的参数以及一个)时,函数调用被执行,例如parseInt('18')。...单个JS文件可能包含严格和非严格模式。...函数可以使用.bind()方法与对象绑定,就可以解决 this 指向的问题。...其中,this指向新创建的对象。 构造函数创建了一个新的空的对象,它从构造函数的原型继承了属性。构造函数的作用就是去初始化这个对象。 可能你已经知道了,在这种类型的调用中,上下文指向新创建的实例。...可以将函数numbers.getNumbers提取到变量simpleGetNumbers中而不进行绑定。

4.4K10

This指向与改变This指向

This指向与改变This指向 This 的指向 在 ES5 中,其实 this 的指向,始终坚持一个原理:this 永远指向最后调用它的那个对象。...this.name); // windowsName } } var f = a.fn; f(); 这里你可能会有疑问,为什么不是 Cherry,这是因为虽然将 a 对象的 fn 方法赋值给变量...所以 this 指向的也就是 window。 this 的指向并不是在创建的时候就可以确定的,在 es5 中,永远是this 永远指向最后调用它的那个对象。...} }; a.func2() // Cherry 在函数内部使用 _this = this 如果不使用 ES6,那么这种方式应该是最简单的不会出错的方式了,先将调用这个函数的对象保存在变量...我们将 this(指向变量 a) 赋值给一个变量 _this,这样,在 func2 中我们使用 _this 就是指向对象 a 了。

1.2K20

js中扩充函数作用域(改变this指向)

开始从js的this对象说起,this对象就是函数执行的环境对象。...结果分析说明 GetName函数是在全局环境中定义,所以直接调用函数this就指向了全局环境,所以输出Jack。...(注意函数不加后面()的时候,那时候就不是调用,那只是一个包含函数指针的变量) 由于函数执行环境变成了obj对象,所以this只想就指向了obj,所以自然就输出了“Tom”。...函数扩展this对象 es5提供了三个函数非继承的方法,可以直接改变this的指向,但是在书中说是扩充函数作用域,但是我认为改变this指向更贴切一点。...三个方法分别为:apply,call,bing,用法都比较简单,作用也都是改变函数的this指向,下面我就用代码来简单说明一下。

2.6K11

JS回调函数中的 this 指向(详细)

首先先说下正常的 this 指向问题 什么是 this:自动引用正在调用当前方法的.前的对象。...this指向的三种情况 1. obj.fun() fun 中的 this->obj ,自动指向.前的对象 2. new Fun() Fun 中的 this->正在创建的新对象,new 改变了函数内部的...this 指向,导致 this 指向实例化 new 的对象 3. fun() 和匿名函数自调 this 默认->window,函数内部的 this,this 默认是指向 window 的 再说回调函数中的...this 指向问题,我们先来看一个例子 1 2 var Bob={ 3 sname:"鲍勃", 4 friends:["Jack","...this 指向的固定化,并不是因为箭头函数内部有绑定 this 的机制,实际原因是箭头函数根本没有自己的 this,导致内部的 this 就是外层代码块的 this。

7.2K30
领券