博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ECMAScript 面向对象技术:this 关键字
阅读量:5058 次
发布时间:2019-06-12

本文共 1368 字,大约阅读时间需要 4 分钟。

关键字 this

this 的功能

在 ECMAScript 中,要掌握的最重要的概念之一是关键字 this 的用法,它用在对象的方法中。关键字 this 总是指向调用该方法的对象,例如:

var oCar = new Object;oCar.color = "red";oCar.showColor = function() {  alert(this.color);};oCar.showColor();		//输出 "red"

在上面的代码中,关键字 this 用在对象的 showColor() 方法中。在此环境中,this 等于 oCar。下面的代码与上面的代码的功能相同:

var oCar = new Object;oCar.color = "red";oCar.showColor = function() {  alert(oCar.color);};oCar.showColor();		//输出 "red"

使用 this 的原因

为什么使用 this 呢?因为在实例化对象时,总是不能确定开发者会使用什么样的变量名。使用 this,即可在任何多个地方重用同一个函数。请思考下面的例子:

function showColor() {  alert(this.color);};var oCar1 = new Object;oCar1.color = "red";oCar1.showColor = showColor;var oCar2 = new Object;oCar2.color = "blue";oCar2.showColor = showColor;oCar1.showColor();		//输出 "red"oCar2.showColor();		//输出 "blue"

在上面的代码中,首先用 this 定义函数 showColor(),然后创建两个对象(oCar1 和 oCar2),一个对象的 color 属性被设置为 "red",另一个对象的 color 属性被设置为 "blue"。两个对象都被赋予了属性 showColor,指向原始的 showColor () 函数(注意这里不存在命名问题,因为一个是全局函数,而另一个是对象的属性)。调用每个对象的 showColor(),oCar1 输出是 "red",而 oCar2 的输出是 "blue"。这是因为调用 oCar1.showColor() 时,函数中的 this 关键字等于 oCar1。调用 oCar2.showColor() 时,函数中的 this 关键字等于 oCar2。

注意,引用对象的属性时,必须使用 this 关键字。例如,如果采用下面的代码,showColor() 方法不能运行:

function showColor() {  alert(color);};

如果不用对象或 this 关键字引用变量,ECMAScript 就会把它看作局部变量或全局变量。然后该函数将查找名为 color 的局部或全局变量,但是不会找到。结果如何呢?该函数将在警告中显示 "null"。

转载于:https://www.cnblogs.com/az19870227/archive/2011/11/30/2268795.html

你可能感兴趣的文章
IOS-图片操作集合
查看>>
Android bitmap图片处理
查看>>
Android应用程序进程启动过程的源代码分析
查看>>
adb logcat 命令行用法
查看>>
Redis学习手册(Key操作命令)
查看>>
模板统计LA 4670 Dominating Patterns
查看>>
文件内容红帽子数据库.profile文件内容详解
查看>>
泛型第23条:请不要在新代码中使用原生态类型
查看>>
对象方法(转载)Java中finalize的使用
查看>>
一个截屏工具制作的全过程记录——如何使用“拿来主义”
查看>>
了解SpringMVC框架及基本工作流程
查看>>
软件开发之能力素养
查看>>
5.28 周末笔记
查看>>
git 永久性设置密码
查看>>
自拍机器人(摄影 拍照 录像)
查看>>
Installation for TinyOS on Ubuntu 16.04
查看>>
h5页面在不同ios设备上的问题总结
查看>>
Python的map、filter、reduce函数
查看>>
前端面试js题
查看>>
51NOD 大数加法以及python写法
查看>>