javascript中this指向的问题】的更多相关文章

JavaScript 是一种脚本语言,支持函数式编程.闭包.基于原型的继承等高级功能.JavaScript一开始看起来感觉会很容易入门,但是随着使用的深入,你会发JavaScript其实很难掌握,有些基本概念让人匪夷所思.其中JavaScript 中的 this 关键字,就是一个比较容易混乱的概念,在不同的场景下,this会化身不同的对象.有一种观点认为,只有正确掌握了 JavaScript 中的 this 关键字,才算是迈入了 JavaScript 这门语言的门槛.在主流的面向对象的语言中(例…
JavaScript中this的四种情况(非严格模式) 1.当this所在函数是事件处理函数时,this指向事件源.2.当this所在函数是构造函数时,this指向new出来的对象.3.this所在函数的所属对象是谁,this指向函数所属对象.4.当this所在函数没有所属对象,this指向window对象 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g…
this指向问题绝对可以排js 的top 5最难和最重点的问题,初学者常常搞不清楚this指向哪里,特别是学过java和c#的人,想当年俺也迷糊了好久,直到遇到蝴蝶书,主要是因为js和主流的面向对象语言java,c#都不同(相似的问题还有new 操作符的问题, 关于new 构构器函数的原理,参见这篇文章: http://www.cnblogs.com/windyfancy/p/5167266.html ),this并不指向当前对象,这是理解this的关键所在,this的指向取决于你是采用何种方式…
javascript中this只有函数执行时候才能确定到底指向谁,实际this最终指向是那个调用它的对象. 1,匿名函数中的this——window function foo(){ var lastName = 'miya'; console.log(this.lastName); //undefined console.log(this); //window } foo(); 2,作为对象的方法的this //作为对象方法 var obj = { a:1, getA: function(){…
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然网上大部分的文章都是这样说的,虽然在很多情况下那样去理解不会出什么问题,但是实际上那样理解是不准确的,所以在你理解this的时候会有种琢磨不透的感觉),那么接下来我会深入的探讨这个问题. 为什么要学习this?如果你学过函数式编程,面向对象编程,那你肯定知道干什么用的,如果你没有学过,那么暂时可以不…
本文参考http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html this是JavaScript的一个关键字,它代表函数运行时自动生成的一个内部对象,只能在函数内部使用,比如: function test () { this.x = 1; } 随着函数使用场合的不同,this的指向会发生变化.但有一个总的原则就是,this指向最后一个调用函数的那个对象. 下面分四种情况,讨论一下this的用法: 情况…
在简单函数中,this是指向当前对象,可用来获取当前对象某个属性,但随着函数变复杂,this很多情况不指向当前对象,而是指向window. 1.在独立调用函数中,具有全局执行环境,this指向window. var name="evan"; function Name(){ this.name="evan2"; 4 console.log(this.name) //evan2 } Name(); console.log(this.name) //evan2 2. 匿…
首先用一个例子指出来constructor存在形式. function Fruit(){ } var f=new Fruit(); console.log(f.constructor);//打印出Fruit() 由上面的代码我们总结出结论1:上面的代码在控制台可以看出constructor是指向构造器Fruit的引用. function Fruit(){ this.name="水果"} //var f=new Fruit(); function Apple(){this.name=&q…
一.JavaScript中的函数 在了解this指向之前,要先弄明白函数执行时它的执行环境是如何创建的,这样可以更清楚的去理解JavaScript中的this指向. function fn(x,y,name){ var str1=x; var str2=y; this.name=name; function(){ alert(str1,str2); } }fn(1,1,Admin); 当调用fn(1,1,Admin)时,首先函数会创建一个活动对象,也叫做变量对象,接着为函数调用创建一个类似数组的…
一个图讲清楚JavaScript中this指向: 说明: (1)严格模式下,禁止this关键字指向全局对象会报错. (2)闭包中的this对象具有全局性,因此通常指向window.  (3)优先级:new>apply/call>.调用>默认调用 (4)null/undefined,在使用apply或者call时传入null/undefined时,会使用默认调用. <!DOCTYPE html> <html lang="zh"> <head…
this是谁 技术一般水平有限,有什么错的地方,望大家指正. this代指当前对象super调用父类的构造函数,应表会运网数物,加载驱动建立链接执行SQL处理结果,直到现在每想起这三点就能想起我上大学的时候,故事背景都是不同的有时候是我玩的正high的时候有时候是我快要睡觉,但是结果都是一致的就是让老师教育几句.现在就介绍一下Javascript中的this. 说this的我们一般都说指向,代表,因为它不是固定的,今天是王麻子明天可能就是二狗子,它是谁不能确定,但是有一点是肯定的它永远指向让它起…
Javascript 中的this 总让人感到困惑,你能分清以下三种test1(),test2(),test3() 情况下的输出吗? 注:以下Javascript运行环境中为浏览器 //1 this在全局函数中使用 var x = 1; function test1() { var  x = 5; alert(this.x); } function _test2() { this.x = 5; alert(this.x); } //2 this 在构造函数中 new 中使用 function t…
在深入学习JavaScript之后,我们越来越多的会遇到函数或者在对象内部中,对于this的指向问题的疑惑,其实基本上每一个编程语言中都有一个this,这个this的指向都是大同小异,你也可以汉化它的意思,this的意思是这个,就是本身的意思,那么在JavaScript中,我们的this代替的那个本身到底会随着代码情况的不同而有什么变化呢?今天,我们就来一体探讨一下JavaScript中关于this的指向问题: 首先呢,this可以指向window对象,和其他调用它的对象,当然,在严格模式下,它…
JavaScript 中的 this 为一个重难点,它不像静态语言 C#.Java 一样,就表示当前对象.而在 JS 中, this 是运行时确定,而并非定义时就已确定其值. 谈起 this ,必须少不了 JavaScript 另一个重点:函数,在 JS 中函数有以下几种定义方法. // 函数声明 function fun(){ } // 函数表达式 var fun=function(){ }; // Function 构造函数 var fun=new Function (arg1, arg2,…
  前  言 JRedu 学过程序语言的都知道,我们的程序语言进化是从"面向机器".到"面向过程".再到"面向对象"一步步的发展而来.类似于汇编语言这样的面向机器的语言,随着时代的发展已经逐渐淘汰:而面向过程的语言也只有C语言老大哥依然坚挺:现在主流的语言(例如Java.C++.PHP等)都是面向对象的语言. 而我们的JavaScript语言,恰恰介于面向过程与面向对象之间,我们称它为"基于对象"的语言.但是,JS中的OOP依…
作为一个前端小白在开发中对于this的指向问题有时候总是会模糊,于是花时间研究了一番. 首先this是JS的关键字,this是js函数在运行是生成的一个内部对象,生成的这个this只能在函数内部使用. 但是随着函数使用场合的不同,this的值会发生变化.有一个原则不会变,那就是this指的是,调用函数的那个对象. demo1: 此时函数运行的结果是 1 ,x是全局变量,因为匿名函数demo()是被window调用的,原始写法是window.demo(),因为demo()是被window调用的,所…
this关键字在JavaScript中扮演了至关重要的角色,每次它的出现都伴随着它的指向问题,这也是很多初学者容易出错的地方. 不过,这篇文章将会带你一次性搞定this指向的问题,望能给大家提供帮助! 一.谁最终调用函数,this就指向谁! 这句话是需要牢记的口诀,将this的指向问题转换为分析确定函数最终调用者的问题,以下是对这句话的解释和补充: ① this指向谁,不应该考虑函数在哪里里声明的,而是应该考虑函数在哪调用:            ② this指向的永远是对象,而不可能是函数. …
各位小伙伴在面试中被面试官问道this指向问题一定不少吧,同时还被问道apply,call和bind的用法区别,现在,就来简单的聊一聊this到底指向何方. 1.基本概念 MDN的官方解释:与其他语言相比,函数的 this 关键字在 JavaScript 中的表现略有不同,此外,在严格模式和非严格模式之间也会有一些差别.在绝大多数情况下,函数的调用方式决定了this的值.this不能在执行期间被赋值,并且在每次函数被调用时this的值也可能会不同. 简而言之: 1.this指向的对象称为函数的上…
首先,JavaScript的this指向问题并非传说中的那么难,不难的是机制并不复杂,而被认为不好理解的是逻辑关系和容易混淆的执行上下文.这篇博客也就会基于这两个不好理解的角度来展开,如要要严格的来对this的指向来分类的话,有三类不同的情况,一种是独立函数执行的指向机制,第二种就是引用指向机制,第三种是new机制下的this指向.然后建立在这三个指向机制的基础上来剖析一些this的常见问题,下面进入正文解析this指向机制: 一.独立函数执行的指向机制 在JavaScript中函数执行可以分为…
很多人都会被JavaScript中this的指向(也就是函数在调用时的调用上下文)弄晕,这里做一下总结: 首先,顶层的this指向全局对象. 函数中的this按照调用方法的不同,其指向也不同: 1.函数调用中的this指向全局对象 2.方法调用的函数中的this指向调用函数的对象: function AnObject(name){ this.name = name; this.getThis = function(){ console.log(this); } } var ob = new An…
要懂得JavaScript中this的用法,首先需要知道,JavaScript中的作用域相关知识. var fun = function(){ var flag = 1; console.log(flag): } var flag = 0; fun(); console.log(flag); 首先看上面这段代码,结果 : 1    0  这个很好理解了,打印的函数内部 flag 的值为 1,全局打印 flag 的值为0. 那么再如果函数内部打印 this.flag 呢? var fun = fu…
javascript中几种this指向问题   首先必须要说的是,this 永远指向函数运行时所在的对象,而不是函数被创建时所在的对象. (1).作为函数名调用   函数作为全局对象调用,this指向全局对象 function a(){ var author = "lry"; console.log(this.author); //undefined console.log(this); //Window } a(); //其实这是相当于 window.a() (2).作为方法调用  …
总所周知,function () {}函数体内的this对象指向的是调用该函数的对象,那么我们看一下这个例子 <script> var length = 3; function fn () { console.log(this.length) } fn(); </script> 函数调用是在最外层发生的,那么由于全局对象this的存在,那么函数体内的this指向的就是window对象. 在浏览器环境下,全局变量和window对象的属性是等价的,所以定义了length全局变量就相当于…
1.前言 在JavaScript中,this的指向一直是大多数初学者的易错点,总是搞不清楚this到底指向谁,而在求职面试中,this的指向问题往往又是高频考点.本篇博文就来总结一下在JavaScript中不同情况下this到底指向谁. 2.热身一下 首先,我们先来看看下面的代码,请问,下面这段代码运行后会在控制台输出什么?如果你能马上回答出程序输出的结果,那么你已经很清楚this的指向了,不用再往下看了. var bar = 2; var obj = { bar: 1, foo: functi…
摘要: 神奇的this! 原文:JS 中 this 在各个场景下的指向 译者:前端小智 Fundebug经授权转载,版权归原作者所有. 1. this 的奥秘 很多时候, JS 中的 this 对于咱们的初学者很容易产生困惑不解. this 的功能很强大,但需要一定付出才能慢慢理解它. 对Java.PHP或其他标准语言来看,this 表示类方法中当前对象的实例.大多数情况下,this 不能在方法之外使用,这样就比较不会造成混淆. 在J要中情况就有所不同: this表示函数的当前执行上下文,JS…
this是JavaScript中的关键字之一,在编写程序的时候经常会用到,正确的理解和使用关键字this尤为重要.首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然网上大部分的文章都是这样说的,虽然在很多情况下那样去理解不会出什么问题,但是实际上那样理解是不准确的,所以在你理解this的时候会有种琢磨不透的感觉),那么接下来我会深入的探讨这个问题.…
javaScript中this对象是在运行时基于函数的执行环境绑定的,在全局函数中,this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象. 但在实际中,代码环境复杂,this的指向并非那么直接判断出来.下面来做一下总结. 1,全局执行环境下的普通函数 function f1 () { console.log(this) } function f2 () { 'use strict' console.log(this) } f1() // window f2() //…
改变JavaScript中函数的内部this指向! 第一种方法 call call 可以 调用函数 + 改变函数内的this指向! var obj = { name: 'lvhang' } function fun(a, b) { console.log(this); console.log(a + b) } // 需求, 让fun函数中的this指向obj对象!还可以进行参数传递! fun(obj, 4, 6); call 主要作用可以实现继承! // call 主要作用可以实现继承! fun…
JavaScript中this的指向问题! 另一个特殊的对象是 this,它在标准函数和箭头函数中有不同的行为. 在标准函数中, this 引用的是把函数当成方法调用的上下文对象,这时候通常称其为 this 值(在网页的全局上下文中调用函数时, this 指向 windows).来看下面的例子: window.color = 'red'; let person = { name: 'lvhang', age: 23, color: 'pink' } function sayColor() { c…
在JavaScript中,this不是固定不变的,它的指向取决于上下文环境,一般的,认为this指向使用它时所在的对象.主要有以下几类指向: 在方法中,this 表示该方法所属的对象. 如果单独使用,this 表示全局对象. 在函数中,this 表示全局对象. 在函数中,在严格模式下,this 是未定义的(undefined). 在事件中,this 表示接收事件的元素. 类似 call() 和 apply() 方法可以将 this 引用到任何对象. 一.方法中的this var isObject…