面向对象高级2-继承

来源:互联网 发布:互力微信淘客软件 编辑:程序博客网 时间:2024/05/01 16:02

继承

var a = { name:'anikin'};
b = a; // 把a这个对象赋给b这个对象
b.name = 'jack';
alert(a.name); // 修改了a的值

b = {};
for(var attr in a){
b[attr] = a[attr];
}
b.name = 'jack';

alert(a.name); // anikin 不会修改a对象的值,这个就是拷贝继承的核心原理

继承:
   子类不影响父类,子类继承父类的一些功能(代码复用)
   属性的继承就是调用父类的构造函数,用call、apply的方法改变this指向
   方法的继承: 方法继承;for in 拷贝继承(jquery也是通过拷贝继承实现的)

function CreatePerson(name,sex){ //父类
this.name = name;
this.sex = sex;
}
CreatePerson.prototype.showName = function(){
alert( this.name );
};

var p1 = new CreatePerson('小明','男'); // 注意:创建对象部分一定要放在window.onload中
//p1.showName();


function CreateStar(name,sex,job){ //子类
CreatePerson.call(this,name,sex);
this.job = job;
}
extend( CreateStar.prototype , CreatePerson.prototype );
CreateStar.prototype.showJob = function(){
};

var p2 = new CreateStar('黄晓明','男','演员');
p2.showName();

// extend这个函数不完整,目前只是json格式。如果是其他格式还需要自行在封装,可以参考jquery
function extend(obj1,obj2){ //
for(var attr in obj2){
obj1[attr] = obj2[attr];
}
}

除了拷贝继承之外还有类式继承,原型继承。
继承在实际开发中应用的不太多;

组件开发:多组对象
组件类似兄弟之间,不同于继承的是。
1:当参数不写的时候报错 --  undefined
 配置参数默认参数,当有配置不存在的时候走默认;注意二者的的key值必须相同,才能覆盖
 默认参数的属性一定要跟配置参数相同
    ---用配置去覆盖默认

2:当参数特别多的时候顺序对不上--json解决
只要把这个理论掌握的很好,在实际的开发中才会实现想要的效果。
写任何面向对象的组件的时候先把框架打起来



比较正规的组件写法:将配置参数,方法,事件三者分离。主要分为:
ul组件:效果形的
功能组件、
组件开发中的事件是自定义事件:有利于多人协作开发,如何去挂载自定义事件与
自定义事件函数

自定义事件重点不在事件上,而是在函数身上。
让函数能够具备事件的某些特性,就叫做自定义事件。
   1.事件有个特点就是不会覆盖,因此只要函数有事件的特性一样,就利于维护了
   2 自定义事件还是函数,只是互相不会再覆盖了;
   3 自定义事件需要主动触发

主动触发自定义事件 fireEvent()  // 需要做映射 addEvent()  多层的映射

0 0
原创粉丝点击