JavaScript精粹读书笔记(5)
第5章
继承
在那些基于类的语言(比如
Java
)中,继承(
inheritance
或
extends
)提供了两个有用的服务。首先,它是代码重用的一种形式。如果一个新的类与一个已存在的类大部分相
似,那么你只须具体说明其不同点即可。类继承的另一个好处是它包括了一套类型系统的规范。由于程序员无须编写显式类型转换的代码,他们的工作量将大大减
轻,这是一件很好的事情,因为类型转换时会丢失类型系统在安全上的好处。
JavaScript
是一门弱类型语
言,从不需要类型转换。对象的起源是无关紧要的。对于一个对象来说重要的是它能做什么,而不是它从哪里来。
JavaScript
提供了一套更为
丰富的代码重用模式。它可以模拟那些基于类的模式,同时它也可以支持其他更具表现力的模式。在
JavaScript
中可能的继承模式有很多。在本章中,我们将研究几种最为直接的模式。当然还有更多更为复杂的结构,但
保持它的简单通常是最好的。
在基于类的语言中,对象
是类
实例,并且类可以从另一个类继承。
JavaScript
是一门基于原型
的语言,这意味着对象直接从其他对象继承。
5.1
伪类
当一个函数对象被创建时,
Function
构造器产生的函数对象会运行类似这样的一些代码:
this.prototype={constructor:this};
新函数对象被赋予一个
prototype
属性,其值是包含一个
constructor
属性且属性值为该新函数对象。该
prototype
对象是存放继承特征的地方。因为
JavaScript
语言没有提供一种方法去确定哪个函数是打算用来作构造器的,所以每个函数都会得到一个
prototype
对象。
constructor
属性没什么用。重要的是
prototype
对象。
当采用构造器调用模式,即使用
new
前缀去调用一个函数时,这将修改函数执行的方式。如果
new
运算符是一个方法而不是一个运算符,它可能会像这样执行:
Function.method(‘new’,function(){
//
创建一个新对象,它继承自构造器函数的原型对象。
var
that=Object.beget(this.prototype);
//
调用构造器函数,绑定
this
到新对象上。
var other =
this.apply(that,arguments);
//
如果它的返回值不是一个对象,就返回该新对象
相关文档:
javascript 字符串处理
一、声明字符串:
var normal_monkey = "I am a monkey!<br>";
document.writeln("Normal monkey " + normal_monkey);
var bold_monkey = normal_monkey.bold();
document.writeln("Bold monkey " ......
这可能是最被忽略的文档操作之一,这都怪微软的不作为与W3C的无能,搞到大家只知道appendChild与insertBefore。后来爆出appendChild在IE有bug,好了,以后只用insertBefore了。现在jQuery兴起后,无数赶鸭子上架的javascript素人连基本API也不学了,直接上手append, preppend, before, after与replaceWith,这比较悲哀… ......
该实例首先需要创建数据库,数据库Test唯一表test,该表具有三个列分别为c1,c2,c3, int型,请自行建立数据库并插入几行测试数据。
然后我们希望能将数据库中的数据读取出来,我在此处只是将数据库数据以数据集的方式存放在本地中, ......
在看一些js框架的脚本时,被一个问题狠狠的困扰着,就是下面的代码是什么意思
var KE = {};
KE.version = '3.4.1';
KE.lang = {
source : '切换模式',
undo : '后退(Ctrl+Z)',
redo : '前进(Ctrl+Y)',
cut : '剪切(Ctrl+X)',
copy : '复制(Ctrl+C)',
paste : '粘贴(Ctrl+V)'
......
这主要用于选择器过滤重复元素时用的。
涉及三种可能的手段:sourceIndex,uniqueID与自定义的uuid。
sourceIndex 获取元素节点在页面的出现顺序,即为其在document.all集合中的索引号。由于要准确获取先后位置,如果在其前面插入一个元素节点,那么它的位置就要加一。换言之,它是动态分配的,每次都要重复计算。注意,I ......