`
DBear
  • 浏览: 231826 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类

JavaScript精炼——functions中的“this”

阅读更多

      先我们需要知道,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例子——计算"中,我们可以推测这是一篇关于使用JavaScript进行数学计算的教程或者示例代码。博主"Fuhao9611"在iteye博客上分享了这个主题,可能包含了基础的算术运算、自定义函数、循环结构或者...

    Really JavaScript!——Douglas Crockford大师见面会报道.pdf

    4. JavaScript的缺点:JavaScript中存在一些不合时宜的东东,需要去掉它们,避免使用不好特性。其中最不合适的就是IE 6。 5. 安全问题:安全问题是当前最重要的,攻击者对网络安全威胁的例证很多。防御XSS方面没有...

    《javascript》——event对象与事件

    《JavaScript》——Event 对象与事件 Event 对象是 JavaScript 中的一个基本概念,它代表了用户与 Web 页面的交互行为,例如点击、鼠标移动、键盘输入等。Event 对象的属性和方法可以帮助开发者更好地处理用户的...

    浅谈JavaScript库——jQuery,ExtJs的对比研究.pdf

    "浅谈JavaScript库——jQuery,ExtJs的对比研究.pdf" 本文简要介绍了目前流行的JavaScript库,并对其中较为流行的两个库jQuery和ExtJs进行了较详细的介绍和对比研究。本文首先简要介绍了JavaScript库的概念和特点,...

    JavaScript凌厉开发——Ext详解与实践 源码 源代码 part3

    JavaScript凌厉开发——Ext详解与实践 源码 源代码 part3 因为源代码比较大,压缩后76M左右 所以分为四个包上传

    javascript中onclick(this)用法介绍

    本文将详细介绍JavaScript中一种常见的事件处理用法——onclick(this)。 首先,我们需要理解什么是onclick事件处理器。在HTML中,onclick是一个事件属性,用于指定当元素被点击时将调用的JavaScript代码。这个属性...

    javascript实战——01( 图灵系列)

    javascript实战 图灵系列 分成四个压缩包,用好压解压,这是第一个

    小议JavaScript库——Dojo、jQuery和PrototypeJS的比较.pdf

    JavaScript 库比较 —— Dojo、jQuery 和 PrototypeJS 在当今的 Web 开发中,JavaScript 库扮演着越来越重要的角色。这些库提供了许多有用的功能,可以帮助开发者快速构建 Web 应用程序。本文将对 Dojo、jQuery 和 ...

    javascript实战——3 图灵系列

    javascript实战 图灵系列 第三卷

    javascript实战——2 图灵系列

    javascript实战 图灵系列 这是第二卷

    JavaScript网页开发——体验式学习教程

    JavaScript,作为一种广泛应用于网页...在阅读《JavaScript网页开发——体验式学习教程.pdf》的过程中,学习者应不断尝试自己动手编写代码,这样才能真正体验到JavaScript的魅力,并逐步成长为一名熟练的前端开发者。

    JavaScript凌厉开发——Ext详解与实践_源码清单

    JavaScript凌厉开发——Ext详解与实践_源码清单JavaScript凌厉开发——Ext详解与实践_源码清单JavaScript凌厉开发——Ext详解与实践_源码清单

    JavaScript——API(CHM)

    JavaScript——API(CHM中文版)

    JavaScript网页开发——体验式学习教程.pdf

    这份"JavaScript网页开发——体验式学习教程.pdf"提供了一个深入理解JavaScript语法和实践的平台,帮助初学者和有一定基础的开发者提升技能。 教程首先会介绍JavaScript的基础知识,包括变量、数据类型(如字符串、...

    javaScript全面分析——中文版

    JavaScript全面分析——中文版是为想要快速理解和掌握JavaScript编程语言的学者精心编写的教程。JavaScript是一种广泛应用于Web开发的脚本语言,它在浏览器端运行,为网页添加交互性,使得用户界面更加生动活泼。本...

    精通JavaScript ——动态网页(实例版)详尽实例

    通过《精通JavaScript ——动态网页(实例版)》这本书,读者不仅能学习到JavaScript语言本身,还能了解其在实际项目中的应用,从而真正精通JavaScript,打造充满活力的动态网页。书中的实例将覆盖这些知识点,让理论...

    JavaScript程序设计——DOM访问实验报告.docx

    实验报告的主题是“JavaScript程序设计——DOM访问”,其目的是深入理解和掌握DOM(Document Object Model)在JavaScript中的应用,包括文档对象的属性、方法以及使用方式。DOM是HTML和XML文档的标准化表示,允许...

    Applet与Javascript的对话——让你的Javascript代码和Java Applet融洽地合作.pdf

    标题中的“Applet与Javascript的对话——让你的Javascript代码和Java Applet融洽地合作”指的是一种技术实现,即如何让JavaScript与Java Applet在Web应用中进行交互。这两种技术在早期Web开发中常常结合使用,以利用...

    JavaScript程序设计——页面设置与表单验证实验报告.docx

    实验报告的标题“JavaScript程序设计——页面设置与表单验证实验报告.docx”涉及的核心是JavaScript编程中的两个关键领域:页面设置和表单验证。在Web开发中,JavaScript是一种常用的客户端脚本语言,用于增强用户的...

Global site tag (gtag.js) - Google Analytics