`

js中this关键字的用法

阅读更多

Js中this具体的用法介绍

 

 

1、在HTML元素事件属性中inline方式使用this关键字

 

 

<div onclick="
 // 可以在里面使用this

 ">division element</div>

 


我们一般比较常用的方法是在此使用:javascirpt: EventHandler(this),这样的形式。不过这里其实可以写任何合法的JavaScript语句,要是高兴在此定义个类也可以(不过将会是个内部类)。这里的原理是脚本引擎生成了一个div实例对象的匿名成员方法,而onclick指向这个方法。

 


2、用DOM方式在事件处理函数中使用this关键字

 

 

<div id="elmtDiv">division element</div>

 <script language="javascript">
 var div = document.getElementById('elmtDiv');
 div.attachEvent('onclick', EventHandler);

 function EventHandler()
 {
    // 在此使用this
 }
 </script>

 

 

 

这时的EventHandler()方法中的this关键字,指示的对象是IE的window对象。这是因为EventHandler只是一个普通的函数,对于attachEvent后,脚本引擎对它的调用和div对象本身没有任何的关系。同时你可以再看看EventHandler的caller属性,它是等于null的。如果我们要在这个方法中获得div对象引用,应该使用:this.event.srcElement。

 


3、用DHTML方式在事件处理函数中使用this关键字

 

<div id="elmtDiv">division element</div>

 <script language="javascript">
 var div = document.getElementById('elmtDiv');
 div.onclick = function()
 {
    // 在此使用this
 };
 </script>

 

 

 

这里的this关键字指示的内容是div元素对象实例,在脚本中使用DHTML方式直接为div.onclick赋值一个EventHandler的方法,等于为div对象实例添加一个成员方法。这种方式和第一种方法的区别是,第一种方法是使用HTML方式,而这里是DHTML方式,后者脚本解析引擎不会再生成匿名方法。

 


4、类定义中使用this关键字

 

 

 

function JSClass()
 {
 var myName = 'jsclass';
 this.m_Name = 'JSClass';
 }

 JSClass.prototype.ToString = function()
 {
 alert(myName + ', ' + this.m_Name);
 };

 var jc = new JSClass();
 jc.ToString();

 


这是JavaScript模拟类定义中对this的使用,这个和其它的OO语言中的情况非常的相识。但是这里要求成员属性和方法必须使用this关键字来引用,运行上面的程序会被告知myName未定义。

 

 

 

5、为脚本引擎内部对象添加原形方法中的this关键字

 

 

Function.prototype.GetName = function()
 {
 var fnName = this.toString();
 fnName = fnName.substr(0, fnName.indexOf('('));
 fnName = fnName.replace(/^function/, '');
 return fnName.replace(/(^\s+)|(\s+$)/g, '');
 }
 function foo(){}
 alert(foo.GetName()); 

 


这里的this指代的是被添加原形的类的实例,和4中类定义有些相似,没有什么太特别的地方。

 

6、结合2&4,说一个比较迷惑的this关键字使用

 

function JSClass()
 {
 this.m_Text = 'division element';
 this.m_Element = document.createElement('DIV');
 this.m_Element.innerHTML = this.m_Text;

 this.m_Element.attachEvent('onclick', this.ToString);
 }

 JSClass.prototype.Render = function()
 {
 document.body.appendChild(this.m_Element);
 }

 JSClass.prototype.ToString = function()
 {
 alert(this.m_Text);
 };

 var jc = new JSClass();
 jc.Render();
 jc.ToString();

 

 

我就说说结果,页面运行后会显示:"division element",确定后点击文字"division element",将会显示:"undefined"。

 

7、函数中的内部函数中使用this关键字

 

function OuterFoo()
 {
 this.Name = 'Outer Name';

 function InnerFoo()
 {
 var Name = 'Inner Name';
 alert(Name + ', ' + this.Name);
 }
 return InnerFoo;
 }
 OuterFoo()();

 

 

    参考资料:     js中this的用法      http://www.studyofnet.com/news/301.html

 

分享到:
评论

相关推荐

    JavaScript中this关键字使用方法详解

    在本文中,我们将深入探讨`this`在JavaScript中的工作原理,以及在不同场景下的用法。 1. **函数调用方式** 在函数调用中,`this`的值取决于函数被调用的方式。如果函数是作为对象的方法调用,`this`将指向调用该...

    详解JavaScript中this关键字的用法_.docx

    在JavaScript中,`this`关键字是一个非常重要的概念,它指的是当前执行上下文中的对象。`this`的值取决于函数的调用方式,而不是定义方式。下面我们将详细探讨在不同场景下`this`的用法。 1. **全局作用域中调用...

    JavaScript中this关键字用法实例分析

    下面我们将通过一系列实例来深入理解`this`的关键字用法。 首先,我们来看一个基本的例子: 例1: ```javascript function a() { var user = "yao"; console.log(this.user); // undefined console.log(this); ...

    js原生态函数中使用jQuery中的 $(this)无效的解决方法.docx

    在JavaScript开发中,使用jQuery的$(this)对象需要遵守JavaScript中this关键字的使用规则。通过使用变量来存储当前函数的this对象,我们可以正确地使用$(this)对象。在开发中,我们需要注意this关键字的使用规则,以...

    js中的this关键字详解

    JavaScript中的`this`关键字是一个非常重要的概念,它用于在函数执行时引用当前上下文的对象。`this`的值取决于函数被调用的方式,这通常分为四种情况:纯粹的函数调用、作为对象方法的调用、作为构造函数调用以及...

    跟我学习javascript的this关键字

    4. `call`和`apply`方法中的`this` JavaScript提供了`call`和`apply`方法来指定函数调用时`this`的值: ```javascript var xpg = { name: "局部" }; function getName() { alert(this.name); } getName(); // ...

    如何使用Javascript中的this关键字

    2. 对象方法中的`this` 当函数作为对象的一个方法时,`this`会指向该对象。 ```javascript var obj = { color: "black", showColor: function() { alert(this.color); } }; obj.showColor(); // 显示 "black" ``...

    深入解析JavaScript编程中的this关键字使用

    JavaScript中的`this`关键字是一个非常核心的概念,它用于在函数执行时引用当前上下文的对象。在JavaScript中,`this`的值取决于函数被调用的方式,而不是函数定义的位置。理解`this`的工作原理对于深入掌握...

    javascript与jquery中的this关键字用法实例分析

    本文将结合实例,分析JavaScript和jQuery中this关键字的用法,并讲解如何获取当前对象的技巧。 首先,在JavaScript中,this的值取决于函数被调用的方式,这通常被称为函数调用的上下文。主要分为以下几种情况: 1....

    精通JavaScript的this关键字_.docx

    当`this`在一个对象的方法中使用时,它会指向那个对象。例如: ```javascript var person = { firstName: "Penelope", lastName: "Barrymore", showFullName: function() { console.log(this.firstName + " " +...

    JScript中的this关键字使用方式补充材料

    在”JavaScript中this关键字使用方法详解”一文中,我曾例举了在JavaScript和JScript中的8种this关键字的方式。这不又发现还有两种this关键字的使用方式当时没有说到,现补充说明一下。并且通过第一种this关键字使用...

    JavaScript中的this关键字使用方法总结

    在JavaScript中,`this`关键字是一个非常重要的概念,它用于引用函数执行时的上下文对象。`this`的值取决于函数被调用的方式,而不是函数的定义位置。以下是关于`this`关键字在JavaScript中四种常见调用方式的详细...

    关于js里的this关键字的理解

    2. 在对象方法中调用时,`this`指向调用该方法的对象。 3. 在构造函数中,`this`指向新创建的实例对象。 4. 使用`call`或`apply`方法时,`this`指向明确指定的对象。 5. 使用`bind`方法时,`this`指向被绑定的对象。...

    PPK 谈 JavaScript 的 this 关键字 [翻译]

    下面先讲如何在event handling(事件处理)中用它,再接着是讲 this 的其他用法。 自己本身 先来看看函数 doSomething() 里的 this 到底是指向(refer to)了什么?function doSomething() { this.style.color = ‘#cc...

    js this关键字_面向对象编程.pdf

    - **对象方法中**:在对象的方法中,`this` 通常指向该对象本身。 - **构造函数中**:当函数作为构造函数被调用(使用 `new` 关键字)时,`this` 指向新创建的对象实例。 - **事件处理器中**:在事件处理函数中...

    Java零基础-this关键字.md

    静态成员属于类而非具体的对象实例,因此在实例方法中直接使用静态成员即可,无需使用`this`。 #### `this`关键字与方法重载的关系 方法重载是指在同一个类中,允许有多个同名但参数列表不同的方法。在方法体中...

Global site tag (gtag.js) - Google Analytics