`
xuluxi
  • 浏览: 1446 次
  • 性别: Icon_minigender_1
  • 来自: 河北
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于JS中this关键字的思考

阅读更多
我在学习JavaScript的过程中this关键字费了我好多的精力,也走了不少弯路,参考了不少前人的文章,现在把this关键字的用法总结如下:
   首先看下面这段代码:
 
   	function k (){
		var length = 3;
		return this.length;
	}
  alert(k());//输出0,并不是3。
  


我们要记住这一点:this永远指向调用它的对象。
而k()运行时this指向的是window,为什么,因为k只不过是window的一个属性,
如果运行
  alert(window.k());//同样输出0,window的length属性默认为0或1;

如果这样呢:
  	var oLength = new Object;
	oLength.length = 23;
         oLength = k;
         alert(oLength());

这样会输出多少?23?
此时还是会输出0,原因同上,oLength是window的一个属性,实际上为:
window.oLength = k;
this同样指向window;
如果这样
  	var oLength = new Object;
	oLength.length = 23;
         oLength.show = k;
         alert(oLength.show());


这时输出为23,this指向oLength.
为什么这回不指向window了,因为show是oLength的一个属性,这个属性里的this必然指向它的对象oLength;
分享到:
评论

相关推荐

    javascript权威指南第五版(英文原版)

    2. **高级特性**:闭包、原型链、作用域、this关键字、函数表达式、箭头函数、模块化(CommonJS、ES6模块)、Promise、异步编程等。 3. **DOM操作**:通过JavaScript与HTML文档对象模型进行交互,包括元素选择、...

    前端面试每日 31以面试题来驱动学习提倡每日学习与思考每天进步一点每天早上5点纯手工发布面试题死磕自己愉悦大家6000道前端面

    4. 对象:对象创建、属性访问、原型链、构造函数、this关键字。 5. 闭包:闭包的概念、作用、应用场景。 6. 异步处理:回调函数、Promise、async/await。 7. DOM操作:选择元素、修改元素、事件处理。 8. BOM处理:...

    北大青鸟 ACCP5.0 S2 JS 第二章课后阶段和作业答案

    【北大青鸟 ACCP5.0 S2 JS 第二章】是北大青鸟教育机构针对JavaScript编程语言在ACCP5.0课程体系中第二阶段的学习内容。这一阶段主要聚焦于JavaScript的基础知识和进阶特性,旨在帮助学员深入理解和掌握这门重要的...

    详解用函数式编程对JavaScript进行断舍离

    在JavaScript中,this关键字是导致许多问题的源头。纯函数不依赖于this,因此可以避免这类问题。 通过上述方法,可以有效地简化JavaScript代码,让代码更加符合函数式编程的原则。最终,开发者会发现,自己的代码...

    JavaJava%BEE软件工程师就业求职手册.doc

    第五章涉及声明和访问控制,涵盖了数组的使用、访问修饰符的作用,以及this关键字、构造器和方法的区别,这些都是编写Java程序时必不可少的知识。第六章提到了流程控制、异常处理和断言,这些都是编写复杂程序时不可...

    一次重构经历 双色球单式-验证.pdf

    - **思考4—引入this**:为了使函数更具可扩展性,引入了`this`关键字,以便更好地引用当前对象。 - **修改后的版本4**:通过将`this`绑定到函数上下文,使得验证函数能够更容易地被复用。 - **思考5—移除数字前面...

    JonasJavascript2021:完整JavaScript课程2021

    复杂的概念,例如“ this”关键字,高阶函数,闭包等。 如何使用流程图和通用模式来架构代码 练习50多项挑战和任务的技能 建立6个美丽的现实世界项目 项目的演示: 实时链接: 实时链接: 实时链接:

    前端面经-校招版本.docx

    编写一个模拟JavaScript构造函数的工作方式,理解new关键字背后的过程,包括创建新对象、原型链继承等。 18. **递归** 递归是解决问题的一种常用技巧,理解递归原理,能够熟练运用递归解决树形结构、斐波那契数列...

    JavaScript面向对象

    `this`关键字在构造函数中引用的是新创建的对象。例如: ```javascript function Person(name, age) { this.name = name; this.age = age; } var zs = new Person("张三", 11); console.log(zs); ``` `new`...

    JS-Day-2:JS 第 2 天 - 作业和练习

    还要学习作用域(全局和局部),闭包,以及this关键字的用法。 3. **对象与原型链**:JavaScript的面向对象特性,包括构造函数、原型、实例化、继承等。原型链是JavaScript实现继承的核心机制,需要深入了解。 4. ...

    图库新版jQuery焦点图 JS代码

    tips[16] = '在追求完美的路上,可能会思考太多,反而让双手闲着。'; tips[17] = '搜索引擎喜欢原创内容和结构合理的Html,而并非罗列出来的关键字。'; tips[18] = '不要小觑用户的智慧,他们能想出各种办法逃脱你...

    javascript-koans

    在 "javascript-koans" 项目中,你将遇到一系列关于变量、数据类型、运算符、流程控制、函数、对象、数组、原型链、闭包、异步编程等主题的测试。每个测试都是一个待解决的错误,你需要通过修改代码来消除这些错误,...

    JavaScript-Challenges:很少有JavaScript挑战

    3. **对象与原型**:深入学习对象的创建、属性操作、原型链、构造函数、this关键字的用法以及继承机制。 4. **数组方法**:掌握map、filter、reduce、forEach、find、findIndex、slice、splice等常用数组方法,以及...

    636858 ES6标准入门 第3版 _opt1

    **ES6标准入门详解** **一、ES6的概述** ES6,全称为ECMAScript 6,是JavaScript语言的第六个...通过学习,读者不仅能了解和掌握ES6的新语法,还能理解标准背后的思考和意义,从而在实际工作中更好地应用这些新技术。

    functionEXE:Function Exercises Pivot Tech Web开发

    4. this关键字:深入学习this的动态绑定,以及在不同上下文中(如函数、对象方法、构造函数)它的指向。 5. 回调函数:JavaScript中的异步编程基础,常用于事件处理和Ajax请求。 6. 高阶函数:函数作为参数传递和...

    javascript-exercises

    6. **this**:`this`关键字根据上下文的不同而改变,理解其在函数、方法、构造函数和箭头函数中的行为。 7. **异步编程**:包括回调函数、Promise、async/await,它们是处理非同步操作(如网络请求、定时任务)的...

    js代码-40 詹志霜

    在这个上下文中,`README.txt`可能会解释这些JavaScript代码的用途,例如每个示例的目标、如何运行它们、预期的结果,甚至可能包括一些关于代码设计和实现的思考。通过阅读这份文档,我们可以更好地理解詹志霜的代码...

Global site tag (gtag.js) - Google Analytics