第五章 继承
1伪类 使用构造函数
var Mamal=function(name){
this.name=name;
};
Mamal.prototype.get_name=function(){
return this.name;
}
构建一个实例,
var myMamal=new Mamal("herb the Mammal");
var name=myMamal.get_name();
构建一个伪类继承Mamal,通过定义constructor并替换他的prototype为一个Mammal的实例。
var Cat =function(name){
this.name=name;
};
//替换Cat.prototype为一个实例Mamal
Cat.prototype=new Mamal();
扩充原型函数
Cat.prototype.say=function(){
return "saying hello"||name;
}
//调用函数
var mycat=new Cat(" henrietta");
var says =mycat.say();
var name =mycat.get_name();
对象说明符
使用参数时,
var myObj=marker(f,l,mc,s);
//写成
var=myObj=maker({
first:f,
last:1,
state: s,
city:c
});
2 原型
继承的第二种形式为,构造一个对象字面量,然后调用beget
var myMamal={
name:"herb the Mammal",
get_name:function(){
return this.name;
};
}
var myCat=Object.beget(myMamal);
//扩张mycat的属性
myCat.name="Henrietta";
myCat.say="hello world";
还可以覆盖父类的方法
myCat.get_name=function(){
return this.saying+","+this.name;
}
作用域
方法调用的实例,将 对象的this作用域,保存后用到函数中。
函数化
var mamal =function(spec){
var that={};
that.get_name=function(){
return spec.spec.name;
}
return that;
};
var myMamal=mamal({ name:‘herb’});
通过调用函数,返回一个对象字面量的实例。
var cat=function(spec){
//为spec扩展属性
spec.say="hello world";
//转成一个新的对象字面量,只能通过方法来访问它的属性。
var that=mamal(spec);
//扩展或者覆盖方法
that.get_name=function(){
return "override the method";
}
return that;
};
使用super的方法。
Object.method('superior',function(name)){
var that=this,
method=that[name];
return function{
return method.apply(that,arguments);
}
};
部件
var event=function(that){
var registry={};
that.fire=function(){
var arry,function,handler,i,type=event.type;
if(registry.hasOwnProperty(type)){
//处理逻辑
}
return this;
}
}
第六章 数组
数组字面量
var empty=[];
var numbers=['one','two','three','four','five'];
第七章 正则表达式
第八章 方法
Arrays, Object ,RegExp,Number,Function,String