this的指向问题及改变this指向】的更多相关文章

首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然网上大部分的文章都是这样说的,虽然在很多情况下那样去理解不会出什么问题,但是实际上那样理解是不准确的,所以在你理解this的时候会有种琢磨不透的感觉),那么接下来我会深入的探讨这个问题. 为什么要学习this?如果你学过面向对象编程,那你肯定知道干什么用的,如果你没有学过,那么暂时可以不用看这篇文章…
在学习javascript中我们往往会被this的指向问题弄的头昏转向,今天我们就来学习一下this的指向问题,和改变this指向的方法. 一.this的指向问题 在学习this的指向问题之前我们需要明白两点: 1:this永远指向一个对象: 2:this的指向完全取决于函数调用的位置: 针对上面第一点我们能很好理解,因为在javascript中一切都是对象.第二点其实也是好理解,当函数调用的位置不同是,this的指向的对象就不同,所以可以说this的指向可以动态变换的,下面我们先通过一个简单的…
概念: this是运行环境下的一个系统变量, 由于this在不同的执行环境下有不同的值, 所以在使用this时,多加注意 (使用this之前,先打印) 1,在全局作用域下,this默认指向window(前端运行环境),{}(后端运行环境). 2,在事件函数中,this指向绑定事件的目标 3,在构造函数中,this指向构造函数将要创建的对象 4,在对象中,this指向对象本身 特殊情况:(1) 有函数嵌套时,内层的函数this不会继承外层函数的this的值,会被还原成window 如果像让内层函数…
this一般指向的是当前被调用者,但也可以通过其它方式来改变它的指向,下面将介绍三种方式: 1.call用作继承时: function Parent(age){ this.name=['mike','jack','smith']; this.age=age; } function Child(age){ Parent.call(this,age);//把this指向Parent,同时还可以传递参数 } var test=new Child(21); console.log(test.age);…
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #a5b2b9 } span.Apple-tab-span { white-space: pre } p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #a5b2b9 } span.Apple-tab-span { white-space: pre } call 1.作…
一.函数的调用方式决定了 this 的指向不同,但总的原则,this指的是调用函数的那个对象: 1.普通函数调用,此时 this 指向 全局对象window function fn() { console.log(this); // window } fn(); // window.fn(),此处默认省略window 2.在严格模式下"use strict",为undefined. function foo(){ "use strict"; //表示使用严格模式 c…
call.apply.bind三者为改变this指向的方法. 共同点:第一个参数都为改变this的指针.若第一参数为null/undefined,this默认指向window call(无数个参数) 第一个参数:改变this指向 第二个参数:实参 使用之后会自动执行该函数 function fn(a,b,c){ console.log(this,a+b+c); // this指向window } fn(); fn.call(document,1,2,3);//call改变之后this指向docu…
前言: 由于js 中this的指向受函数运行环境的影响,指向经常改变,使得开发变得困难和模糊,所以在封装sdk,写一些复杂函数的时候经常会用到this 指向绑定,以避免出现不必要的问题,call.apply.bind基本都能实现这一功能,现对这三种方法使用总结一下: 1.function.prototype.call() call 方法可以指定this 的指向(即函数执行时所在的的作用域),然后再指定的作用域中,执行函数 call 方法的参数,应该是对象obj,如果参数为空或null,undef…
jQuery $.on()方法和addEventListener改变this指向 标签(空格分隔): jQuery JavaScript jQuery $.on() jq的绑定事件使用$([selector]).on([types], [selector], [data], [fn], [one])方法:解绑事件使用off,但是解绑具体事件时候handler只能是具名函数. 在一个对象中,当我们想要在具名函数中用this访问当前对象的属性,可以从[data]参数传入,然后在具名函数中通过e.da…
最近又遇到了JacvaScript中的call()方法和apply()方法,而在某些时候这两个方法还确实是十分重要的,那么就让我总结这两个方法的使用和区别吧. 1.改变函数内部的this指向的三种方法:call(),apply(),bind() 2. 相同点:都可以改变this指向. 都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域. 一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向. ca…