1.关于this指针的理解
this指针是面向对象程序设计中的一项重要概念,它表示当前运行的对象。在实现对象的方法时,可以使用this指针来获得该对象自身的引用。和传统意义的面向对象的语言不同,JavaScript 中的this 指针是一个动态的变量,一个方法内的this指针并不是始终指向定义该方法的对象的,在上一节讲函数的apply和call方法时已经有过这样的例子。为了方便大家理解,再来看下面的例子:
<script language="JavaScript" type="text/javascript">
<!--
//创建两个空对象
var obj1=new Object();
var obj2=new Object();
//给两个对象都添加属性p,并分别等于1和2
obj1.p=1;
obj2.p=2;
//给obj1添加方法,用于显示p的值
obj1.getP=function(){
alert(this.p); //表面上this指针指向的是obj1
}
//调用obj1的getP方法
obj1.getP();
//使obj2的getP方法等于obj1的getP方法
obj2.getP=obj1.getP;
//调用obj2的getP方法
obj2.getP();
//-->
</script>
从代码的执行结果看,分别弹出对话框1 和2。由此可见,getP函数仅定义了一次,在不同的场合运行,显示了不同的运行结果,这是有this指针的变化所决定的。在obj1 的getP方法中,this就指向了obj1 对象,而在obj2 的getP 方法中,this就指向了obj2 对象,并通过this指针引用到了两个对象都具有的属性p。
由此可见,JavaScript 中的this 指针是一个动态变化的变量,它表明了当前运行该函数的对象。由this指针的性质,也可以更好的理解JavaScript中对象的本质:一个对象就是由一个或多个属性(方法)组成的集合。每个集合元素不是仅能属于一个集合,而是可以动态的属于多个集合。这样,一个方法(集合元素)由谁调用,this指针就指向谁。实际上,前面介绍的apply方法和call方法都是通过强制改变this指针的值来实现的,使this指针指向参数所指定的对象,从而达到将一个对象的方法作为另一个对象的方法运行的效果。
同时,每个对象集合的元素(即属性或方法)也是一个独立的部分,全局函数和作为一个对象方法定义的函数之间没有任何区别,因为可以把全局函数和变量看作为window对象的方法和属性。也可以使用new 操作符来操作一个对象的方法来返回一个对象,这样一个对象的方法也就可以定义为类的形式,其中的this指针则会指向新创建的对象。在后面可以看到,这时对象名可以起到一个命名空间的作用,这是使用JavaScript进行面向对象程序设计的一个技巧。例如:
var namespace1=new Object();
namespace1.class1=function(){
//初始化对象的代码
}
var obj1=new namespace1.class1();
这里就可以把namespace1 看成一个命名空间。
由于对象属性(方法)的动态变化特性,一个对象的两个属性(方法)之间的互相引用,必须要通过this指针,而在传统语言中,this关键字是可以省略的。但是上面的例子中:
obj1.getP=function(){
alert(this.p); //表面上this指针指向的是obj1
}
这里的this 关键字是不可省略的,即不能写成alert(p)的形式。这将使得getP 函数去引用上下文环境中的p变量,而不是obj1 的属性。
2.获取对象的所有属性
for(attrubute in deskTop)
{
alert(attrubute);
}
分享到:
相关推荐
这些基础知识构成了JavaScript对象模型的基础,理解和熟练掌握这些概念对于编写JavaScript代码至关重要。在实际编程中,我们经常结合使用这些对象和方法来实现各种功能,如数据处理、用户交互等。随着学习的深入,还...
1. **对象去重的基本思路** 在JavaScript中,由于对象是引用类型,直接比较两个对象是否相等(`==`或`===`)并不适用于判断它们是否相同,因为它们的内存地址不同。因此,我们需要根据对象的属性来判断它们是否重复...
本文旨在深入解析JavaScript对象模型的关键概念,包括基本数据类型、对象、函数及其内部实现原理。 #### 二、基本数据类型 在JavaScript中,基本数据类型是最底层的实现形式。主要包括以下几种: - **Undefined**...
这些方法的实现展示了JavaScript中对象属性的基本操作方式。 1. **设置属性**:`xSystem.set`方法接收两个参数,`name`和`value`,用于设置`globle`对象上的属性值。 2. **获取属性**:`xSystem.get`方法接收一个...
### JS中Json对象 #### JSON概述 ...无论是客户端还是服务端,掌握JSON的基本概念和操作方法都是必不可少的技能。通过理解JSON的工作原理和使用场景,开发者可以更好地利用这一工具提高开发效率和用户体验。
在JavaScript编程中,获取对象和数组的属性键值(key)和对应值(value)是一项基本操作。本文将详细介绍如何实现这一功能,并提供相应的代码示例。 首先,我们需要理解JavaScript中的对象和数组。对象是一种键值对...
MooTools提供了许多实用的工具和功能,比如Element、Fx、Events、Class等模块,这些模块使得开发人员能够轻松地处理DOM、动画效果、事件以及创建复杂的JavaScript对象。 1. **MooTools的Class系统**:MooTools的...
每个JavaScript对象都有一个`__proto__`属性,指向它的构造函数的原型。当试图访问对象的一个属性时,如果该对象上没有这个属性,JavaScript会查找其`__proto__`,再找不到就继续查找`__proto__`的`__proto__`,直到...
了解JavaScript对象的这些基本概念对于编写高效的JavaScript代码至关重要,无论是处理DOM操作、BOM交互,还是构建复杂的业务逻辑。掌握对象的创建、属性操作以及数据类型的理解,都将使你在JavaScript编程中更加...
JavaScript的核心对象构成了其基础框架,它们提供了丰富的功能,使得开发者能够处理数据、控制网页行为、操作DOM以及与服务器进行通信。本参考手册将深入探讨JavaScript的核心对象,帮助你更好地理解和运用这些对象...
javascript常用对象及方法 javascript中有许多常用的对象和方法,了解这些对象和方法可以帮助我们更好地...这些对象和方法都是javascript中的基本组成部分,了解它们可以帮助我们更好地使用javascript,提高开发效率。
总的来说,理解和熟练运用JavaScript中的数组和对象是每个前端开发者的基本功。通过深入研究源码,我们可以更好地理解JavaScript引擎的工作机制,而借助工具库,则可以简化代码并提高开发效率。在实际开发中,不断...
以上就是使用`FileSystemObject`对象在JavaScript中进行文件操作的基本介绍。需要注意的是,由于`FileSystemObject`对象与现代Web标准不兼容,因此在实际开发中通常不会使用这种方法。但在某些特殊环境下,了解其...
而JavaScript Object(Js对象)是JavaScript编程中常用的数据结构,它提供了键值对的方式来存储和操作数据。在处理大量结构化数据时,将XML转换为JS对象可以提高代码的可读性和执行效率,因为JS对象的操作通常比XML...
- **对象与数组**:如何定义JavaScript对象和数组,并在QML中使用它们来存储和操作数据。 - **函数与方法**:定义和调用JavaScript函数,以及在QML对象上添加自定义方法。 - **信号与槽**:利用JavaScript处理QML的...
总结,JSON字符串与JavaScript对象之间的转换是Web开发中的基本操作。理解并熟练掌握`JSON.parse` 和 `JSON.stringify` 以及它们与jQuery相关方法的区别,对于处理JSON数据至关重要。在实际应用中,应优先考虑使用...
"JAVASCRIPT对象属性大全.doc"和"js对象属性方法大总结.doc"可能涵盖了JavaScript对象的属性和方法,包括但不限于原型链(prototype)、原型对象(__proto__)、构造函数(constructor)、以及如何添加和访问对象的...
JavaScript作为一种广泛使用的脚本语言,不仅在浏览器环境中发挥着重要作用,在服务器端开发(如Node.js)及桌面应用程序开发等领域也有广泛应用。面向对象编程作为一种重要的编程范式,能够帮助开发者更好地组织...
在深入探讨“JS描述,基本操作”的主题时,我们首先需要理解JavaScript(简称JS)作为一门脚本语言,在现代Web开发中的核心地位。JavaScript是一种解释型或即时编译的编程语言,它支持函数式编程、命令式编程以及...