说到js中的函数中的this指针,就像是悟空的毫毛一样,可以随时变来变去,理解起来十分困难,但是万变不离其宗,都是悟空的毫毛而已 ^-^.
要中文js中的this,只要记住一点:
谁调用了该函数,那么该函数中的this就是指的它;如果没有看出是谁调用的,那么就是window调用的,因为只有它有这个权利。下面结合例子来理解:
例子1:
function F(){
function C(){
return this;
}
return C();
}
var o = new F();
console.log(o); // 打印 Window
console.log(window); // 打印 Window
上面函数C中的this指针是执行 o 吗?
首先我们看,对象 o 调用了 函数 C() 吗?没有吧,对象 o 没有做任何事情!所以C中的this指针不是指向 o ,而是widow。这里其实可以看做是 window 调用 “new F()”,所以this指针是window,而不是 o ,因为o 并没有调用任何方法。
例子2:
var fullname = 'focus2008';
var obj = {
fullname:'yuanfang',
prop:{
fullname:'direnjie',
getfullname:function(){
return this.fullname;
}
}
};
console.log(obj.prop.getfullname()); // direnjie
var test = obj.prop.getfullname; // focus2008
console.log(test());
上面的结果有这么理解呢?
1)因为obj 是一个对象,但是 prop 也是一个对象,所以第一个直接调用 getfullname()的是prop,所以打印的是 direnjie, 而不是 yuanfang
2)第二个 test 是一个全局变量,他的值是一个函数地址,test()调用其实就是:window.test(),所以打印的是全局的fullname,也就是 window.fullname;
如此而已。
关于call和apply会改变函数的调用者,所以也就改变了函数中的this指针。
分享到:
相关推荐
总之,理解JavaScript中的this关键字需要对执行上下文、函数调用方式、以及函数如何被定义和使用有深入的认识。通过本文对this关键字的分析,我们可以得到一个更加清晰和全面的理解,并在实际开发中更加自如地运用。
### 深入理解JavaScript系列知识点详析 #### 一、编写高质量JavaScript代码的基本要点 在这一章节中,汤姆大叔主要介绍了编写高质量JavaScript代码的关键要素。这些要素不仅包括了语法层面的最佳实践,还涉及到了...
JavaScript中的`this`关键字是一个非常重要的概念,它在不同上下文中具有不同的指向,这使得理解和掌握`this`的用法成为JavaScript开发中的关键点。在本文中,我们将深入探讨`this`在全局变量、函数、对象、构造函数...
- **原型链**:深入理解JavaScript中的原型链机制,明白对象继承的原理。 - **this关键字**:掌握this在不同上下文中指向的对象,理解其作用于函数调用模式的变化。 #### 3. 高级特性 - **异步编程**:学习事件循环...
此外,《JavaScript语言精粹》还会深入讨论作用域、变量提升、this关键字、事件处理、DOM操作以及异步编程,如回调函数、Promise和async/await。这些知识点对于前端开发人员来说至关重要,因为它们直接影响到网页的...
本资料"深入理解JavaScript作用域共12页.pdf"将详细探讨这一主题。 在JavaScript中,作用域主要有两种类型:全局作用域和局部作用域。全局作用域的变量在整个脚本中都是可访问的,而局部作用域的变量只在其声明的...
总之,深入理解JavaScript的`this`机制对于编写高效、可维护的代码至关重要。通过区分调用者和所有者,以及掌握`apply`和`call`的用法,我们可以更好地控制函数执行时的上下文,从而实现更复杂的编程模式。
《深入理解JavaScript特性1》是一本面向前端开发者和JavaScript编程爱好者的指南,旨在帮助读者掌握JavaScript语言的新进展,特别是ECMAScript 6 (ES6)引入的诸多特性。书中通过丰富的实例,逐步解析了JavaScript的...
JavaScript是一种动态类型的...通过这些深入的讲解,你应该能更好地理解JavaScript中对象、原型、函数和闭包的工作原理,为你的JavaScript开发打下坚实的基础。在实际编程中,灵活运用这些知识可以解决许多复杂的问题。
在JavaScript编程语言中,`this`关键字是一个至关重要的概念,它常常引发初学者的困惑,因为它的值在不同的上下文中可能会有所不同。`this`关键字主要用来引用对象的上下文,或者说是当前执行环境中的对象。在本文中...
在JavaScript中,`this`关键字的作用域是一个经常让人困惑的主题,尤其对于那些习惯于其他面向对象语言...在实际开发中,深入理解`this`的作用域和它如何根据上下文变化,将有助于写出更安全、更可靠的JavaScript代码。
ECMAScript是一种高度抽象的面向对象语言,其核心特性是基于对象的交互方式。在ECMAScript中,基本类型在需要的时候会被转换成对象。对象是一个属性集合,...理解这些概念对于深入学习和使用JavaScript语言至关重要。
2. **字母顺序的关键字列表**:关键字是JavaScript语言中预定义的保留词汇,如`break`, `case`, `catch`, `class`, `const`, `continue`, `debugger`, `default`, `delete`, `do`, `else`, `enum`, `export`, `...
总的来说,理解JavaScript中的`this`作用域关键在于识别调用上下文,即`this`的值取决于函数被调用的方式。这包括全局调用、作为对象方法调用、事件处理以及使用`.call()`、`.apply()`或`.bind()`等方法。熟悉这些...
在深入探讨`this`指针之前,我们首先应当明确`this`在JavaScript中的基本概念与作用。`this`关键字在JavaScript中扮演了一个非常核心的角色,它是一个特殊的变量,用于引用调用当前函数的对象。`this`的值并不是静态...
《JavaScript语言精粹》是一本深受开发者喜爱的经典书籍,它深入浅出地讲解了JavaScript的核心概念和技术,帮助读者掌握这门语言的精髓。下面,我们将详细探讨这本书中涉及的一些重要知识点,并结合源代码"example_...
`this`在JavaScript中并不像其他语言中的`this`那样简单地指向对象本身,而是根据函数调用的方式动态确定其指向。理解`this`的工作方式对于编写高质量的JavaScript代码至关重要。 1. **默认绑定**: - 当函数被...
在JavaScript编程语言中,"this"关键字是一个至关重要的概念,它用于引用对象的上下文,尤其是在函数调用时。理解this的用法是提升JavaScript技能的关键。本篇将深入探讨JavaScript中的this用法,帮助你更好地掌握这...
【深入理解JavaScript及其开发调试工具】 JavaScript是一种广泛用于网页和网络应用的编程语言,它主要负责客户端的交互逻辑,使得网页动态化、响应用户操作。本文将深入探讨JavaScript的核心概念,包括对象和原型链...