首先我们需要知道,function的invoke方式主要有三种:1、单纯调用 2、作为某对象的method被调用 3、apply()和call()调用。针对三种不同的invoke方式,"this"拥有不同的指向:当function被作为单纯的function启动时,那么“this”指向的是global object;当function是某个object的method,并由该object作为方法来启动时,“this”指向调用该function的那个object;使用apply()和call()方法调用时,function中的"this"指向的是这两个方法中的作为第一个参数的那个对象。
1. ordinary invoke
var testVar = 20;
function test() {
var testVar = 40;
document.write (this.testVar); // 20 is printed,"this" refers to global object
}
test();
2. method invoke
var testVar = 20;
function test() {
var testVar = 30;
var o = {testVar: 60,
methodFunc: function(){
this.testVar = 70; //when the function invoked, “this” refers to o
}};
o.methodFunc();
document.write(testVar + "<br>"); //print 30
document.write(o.testVar + "<br>"); //print 70, property of o has been changed
document.write(this.testVar + "<br>"); //print 20, property of global object remains as
}
test();
3. nested function in a method---ordinary invoke
var testVar = 20;
function test5() {
var testVar = 30;
var o = {testVar: 60,
methodFunc: function(){
this.testVar = 70;
(function(){
this.testVar = 40;
})();
}};
o.methodFunc();
document.write(testVar + "<br>"); //30
document.write(o.testVar + "<br>"); //70, this refers to object o
document.write(this.testVar + "<br>"); //40, this refers to global object !!!!Confusing ha? But it's true!!!
}
test5()
4. invoked by call() and apply()
function bindedFunc() {
this.testVar = 40;
}
function test() {
var testVar = 20;
var o = {testVar: 30};
bindedFunc.apply(o);
document.write(o.testVar) //prints 40
}
test();
分享到:
相关推荐
在这个"JavaScript例子——计算"中,我们可能会看到如何利用JavaScript进行各种计算操作。博客链接指向了作者fuhao9611在iteye上的一个博客条目,尽管具体内容无法直接复制到这里,但我们可以基于常见的JavaScript...
《JavaScript》——Event 对象与事件 Event 对象是 JavaScript 中的一个基本概念,它代表了用户与 Web 页面的交互行为,例如点击、鼠标移动、键盘输入等。Event 对象的属性和方法可以帮助开发者更好地处理用户的...
JavaScript凌厉开发——Ext详解与实践 源码 源代码 part3 因为源代码比较大,压缩后76M左右 所以分为四个包上传
在提供的"用JavaScript绘图 ——JS2D函数集.htm"文件中,应该包含了关于这些函数的详细解释和示例代码,读者可以通过阅读和实践进一步理解并掌握这些绘图技巧。无论是初学者还是有经验的开发者,了解和熟练运用JS2D...
本文将详细介绍JavaScript中一种常见的事件处理用法——onclick(this)。 首先,我们需要理解什么是onclick事件处理器。在HTML中,onclick是一个事件属性,用于指定当元素被点击时将调用的JavaScript代码。这个属性...
javascript实战 图灵系列 分成四个压缩包,用好压解压,这是第一个
JavaScript 库比较 —— Dojo、jQuery 和 PrototypeJS 在当今的 Web 开发中,JavaScript 库扮演着越来越重要的角色。这些库提供了许多有用的功能,可以帮助开发者快速构建 Web 应用程序。本文将对 Dojo、jQuery 和 ...
JavaScript,作为一种广泛应用于网页...在阅读《JavaScript网页开发——体验式学习教程.pdf》的过程中,学习者应不断尝试自己动手编写代码,这样才能真正体验到JavaScript的魅力,并逐步成长为一名熟练的前端开发者。
这份"JavaScript网页开发——体验式学习教程.pdf"提供了一个深入理解JavaScript语法和实践的平台,帮助初学者和有一定基础的开发者提升技能。 教程首先会介绍JavaScript的基础知识,包括变量、数据类型(如字符串、...
在“JavaScript动态网页开发详解——JavaScript特效”这一主题中,我们将深入探讨JavaScript如何实现各种炫酷的网页效果。 一、JavaScript基础 在讨论特效之前,我们需要了解JavaScript的基础。JavaScript语法与...
实验报告的主题是“JavaScript程序设计——DOM访问”,其目的是深入理解和掌握DOM(Document Object Model)在JavaScript中的应用,包括文档对象的属性、方法以及使用方式。DOM是HTML和XML文档的标准化表示,允许...
标题中的“Applet与Javascript的对话——让你的Javascript代码和Java Applet融洽地合作”指的是一种技术实现,即如何让JavaScript与Java Applet在Web应用中进行交互。这两种技术在早期Web开发中常常结合使用,以利用...
初识JavaScript ———(2)!!!.md
初识JavaScript———(1)!!!.md
在标题“学习资源——JavaScript”与描述“点点滴滴,记录JavaScript的开头引用的应用”中,我们可以理解到这份文档旨在分享JavaScript的一些基本应用实例,特别是关于如何引入(import)或链接(link)外部资源。...
下面小编就为大家带来一篇javascript运算符——逻辑运算符详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
JavaScript插件——pace-js的快速掌握-附件资源
JavaScript凌厉开发——Ext详解与实践 源码 源代码 part4 因为源代码比较大,压缩后76M左右 所以分为四个包上传
JavaScript毕业设计——篮球赛事助手源码。已获高分通过项目。 在功能上实现创建比赛,统计参赛人员,统计比赛得分与犯规次数。 安装教程 启动服务器操作 (1) 找到服务器 woao_server 所在文件,点击进去文件 (2...