JavaScript面向对象详解
内置类
JavaScript是一种基于对象的解释性编程语言,所有的元素,我们都可以理解为对象,每个对象也可以理解为N多属性的集合。在讨论自定义类之前,我们先看一下内置的类。作为解释性语言,JavaScript允许我们在任何时候为对象添加属性。所以我们可以先看一段简单的创建对象的代码片段。这里的“new Object”也可写作“new Object()”,当没有参数时,括号可以省略。
obj = new Object;
obj.x = 1;
obj.y = 2;
现在使用下图来理解一下这段代码的意义。
其中方括号中的内容代表对象,下面的内容则是对象的属性描述信息。从图中可以看出对象【obj】是从类Object中创建的,在创建时,调用了构造函数Object。在【obj】中有两个属性【x】和【y】,值分别是1和2。除了属性【x】和【y】之外,这里要注意的一个内容就是,对象【obj】还有一个构造函数的constructor,它的值就是函数Object。图中的Object.prototype,至于这个该怎么称呼,我也不知道,感觉可以叫的名字挺多的:),命名一:构造函数Object的prototype属性,命名二:类Object的prototype属性,命名三:对象【obj】的属性prototype,稍候会介绍prototype。
自定义类
我们可以通过创建一个函数来创建一个新的自定义类。在使用new操作符创建对象时,函数本身就充当了类的构造函数的角色。在JavaScript内部,首先会创建一个对象,然后利用构造函数来对对象内的各个属性进行初始化。执行构造函数前,变量this会首先被初始化并指向刚创建的对象。只有我们愿意,可以创建任意多个Foo类型的对象,虽然它们的属性初始值都是1和2,但各个对象间属性是不共享的。
对于关键字this的理解,这里就不叙述了,可以参考《JavaScript终极指南》。
function Foo()
{
this.x = 1;
this.y = 2;
}
obj = new Foo;
从图中可以看出,在对象【obj】整个创建完成的过程中,会经历Object和Foo的prototype,最终生成对象【obj】。下面就着重描述下prototype。
继承、Prototype和Prototype链
在JavaScript中,每个对象都可以从另外一个对象继承属性,而这个过程中有一个重要的概念就是prototype(原型),prototype中的内容在对象初始化的时候会全部继承下来。当我们访问一个对象的属性时,JavaScript首先会从对象本身的属性中查找,看属性是否直接定义在对象内。如果没有,JavaScript会继续从当前对象的prototype中查找,以此类推,一层层的进行访问。每个对象在创
相关文档:
//构造函数:用指定的名字和可选的性质为指定的文档创建一个cookie对象。
//参数:
// doucment:保存cookie的Document对象
// name: 指定cookie名的字符串
// hours: Number,指定从现在起到cookie过期的小时数
// path: String,指定cookie的路径性质
// domain: String, 指定cookie的域性质
// secure: Bo ......
最低一直在写JavaScript,就本人遇到的两个问题以及解决方法给大家分享一下.
1,点击一个按钮,创建一段HTML代码和现有的一模一样,但是里面所有ID的参数和方法里面的参数要改变,参数都是若干个字母+数字组成.新创建出来的HTML代码片段要里面的参数变成字母不变,数字要+1.
如,变之前的代码,
<div id=”testdiv1&rd ......
一、主页面(采用jsp实现)
<%@ page language="java" contentType="text/html; charset=gb2312"
pageEncoding="gb2312"%>
<%@page import="org.accp.jwebplayer.biz.MusicBiz"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<h ......
这个效果应该不算什么稀奇,网上也有现成的代码,我这个也没什么特别的地方,只是因为我自己写的,也算是为学习DOM后一个练习;在IE下测试通过;
实现效果是这样的:
读取XML文档;
采用递归生成无限级的树形菜单;
能够响应鼠标事件,展开与拆叠子级菜单;
首先是生成一个XML文档,我用的是XML Spy的编辑器;
< ......