标签:javascript 脚本语言 面向对象 html xml
JavaScript 是一种脚本语言,主要用在浏览器中,实现对网页的文档对象的操作和一些用户交互动作的处理。李炎恢老师所讲的一百多集视频,对JavaScript进行了一次比较彻底的剖析,作为初学者感觉老师讲了好多的东西。这是缺乏全局观的表现,没有在全局上对JavaScript进行分析,只是一头扎进视频里不能自拔,所以才觉得知识琐碎,没有联系。但是对视频中琐碎的知识进行整理才发现:
JavaScript一共分为三部分:ECMAScript、DOM、BOM。
ECMAScript实际上是一种脚本语言在语法和语义上的标准,定义了脚本语言的所有属性、方法和对象。这些基础的知识就不再多说了,这里主要提一下JavaScript的继承机制是怎么实现的。
作为面向对象的语言,JavaScript也必须支持继承机制,但是他的继承却与其他语言略有不同。
1、 对象冒充
构造函数使用this关键字给所有属性和方法赋值。因为构造函数只是一个函数,所以可使ClassA的构造方法称为ClassB的方法,然后调用它。ClassB就会收到ClassA的构造方法中定义的属性和方法。
这样变量b中就包含了ClassA中定义的方法。
function ClassA(name){ this.name=name; this.getName=function(){ return this.name; } } function ClassB(name,password){ this.ClassA=ClassA; this.ClassA(name); delete this.ClassA; this.password=password; this.getPassword=function(){ return this.password; } } var b =new ClassB('wwww','1123'); document.write(b.getName());
此外,我们还可以通过call()和apply()方法实现对象冒充,不再举例。
2、原型链
原理是:对象的构造函数可以从其他对象中继承方法,它创建出一个原型对象后,所有其他的新对象都可以基于这个原型对象来构建。原型本身并不会从其他原型或者构造函数中继承属性,而属性都是从实际对象那里继承过来的。
function Person(name){ this.name=name; } Person.prototype.GetName=function(){ return this.name; } function User(name,password){ this.name = name; this.password = password; } User.prototype = new Person(); User.prototype.GetPassword=function(){ return this.password; }
解释:
User.prototype = new Person();这句话如何理解呢?User是对User对象构造函数的引用,new Person()使用person构造函数创建了一个Person对象,然后把Person对象的原型置为这个操作的结果。也就是说,当每次new User()时,得到的新User对象都会带有Person对象的所有方法
DOM--对象文档模型(Document Object Model),是 HTML 和 XML 的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档。HTML 或 XML 页面的每个部分都是一个节点的衍生物,用 DOM API 可以轻松地删除、添加和替换节点。通过这种机制使我们对文档的内容和结构具有空前的控制力,大大提高了页面的交互能力。
HTML DOM树形图:
BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作。使用 BOM,我们可以移动窗口、改变状态栏中的文本以及执行其他与页面内容不直接相关的动作。
其中就包括浏览器检测,由于每个浏览器都具有自己独到的扩展,所以在开发阶段来判断浏览器是一个非常重要的步骤。虽然浏览器开发商在公共接口方面投入了很多精力,努力的去支持最常用的公共功能;但在现实中,浏览器之间的差异,以及不同浏览器的“怪癖”却是非常多的,因此浏览器检测除了是一种补救措施,更是一种行之有效的开发策略。作为开发者,我们更应该全面的考虑问题,提高系统的健壮性、可靠性!
总结:
ECMAScript 描述了JavaScript语言的语法和基本对象;——核心
DOM 描述了处理网页内容的方法和接口;
BOM 描述了与浏览器进行交互的方法和接口。
JavaScript的学习才刚刚开始。。
标签:javascript 脚本语言 面向对象 html xml
原文地址:http://blog.csdn.net/u010028869/article/details/41790071