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中查找,以此类推,一层层的进行访问。每个对象在创
相关文档:
一、DOM基础
1.节点(node)层次
Document--最顶层的节点,所有的其他节点都是附属于它的。
DocumentType--DTD引用(使用<!DOCTYPE>语法)的对象表现形式,它不能包含子节点。
DocumentFragment--可以像Document一样来保存其他节点。
Element--表示起始标签和结束标签之间的内容,例如<tag></tab ......
javascript评估用户输入密码的强度
密码已经是我们生活工作中必不可少的工具,但一个不安全的密码有又有可能会给我们造成不必要的损失。作为网站设计者,如果我们在网页中能对用户输入的密码进行安全评估,并显示出相应的提示信息,那么对用户设置一个安全的密码将有很大帮助。同时也使得网站更具人性化,更有吸引力.
什么是一 ......
JavaScript不区分单个字符和字符串,任何字符或字符串可以用双引号或单引号引起来。如果字符串本身含有双引号,则应使用单引号将字符串括起来;如果字符串本身含有单引号,则应使用双引号将字符串引起来,两者可以嵌套使用。 ......
今天在学习Bom时遇到了一个错误:
Static overflow at 7
错误原因:自定义了一个 scrollTo(),与系统window.scrollTo()冲突,以致引起死循环,此错误在弹出错误框,而在FF下没有反应,但function也不执行。另外<img src="" onerror=""/>也可能出现这种情况。详细请参考:http://www.cnblogs.com/S.Sams/archive/200 ......
有时候进行ajax交互的时候,返回的数据可以自己添加分隔符,比如^^^,然后对这些分隔符进行解析,分解为一个数组。
function fill(v) {
if (v == undefined)return false;
var result = v.split("^^^");
$("#cnPatent").val(result[0]);
$("#cnPText").val(result[1]); ......