首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

javascript里边的继承

2012-10-26 
javascript里面的继承/**?* 构造对象?* 通过构造函数操作this构造出的对象,不但具有各自的成员数据还有各

javascript里面的继承

/**
?* 构造对象
?* 通过构造函数操作this构造出的对象,不但具有各自的成员数据还有各自的方法数据,即方法的代码体在每个对象中都存在着一个副本
?* 也就是说每个对象是调用自己的方法,而不是像java等语言中所有对象都是调用的同一个方法的引用,
?* 即每个对象的方法的引用是不同的,尽管它们的逻辑是一样的
?* */

?

?

//改进

?
//缺点是看不出jump与Human的关系

?

继续改进使用prototype

?/**
? * prototype chain
? * 我们定义的对象都是继承自Object对象,Object.prototype的属性可以被我们定义的对象使用
? * 那么自定义的对象如何继承其它的类呢??myclass.prototype = new Object()相当于将myclass继承于Object,
? * 继承之后,myclass生成的对象可以使用Object.prototype里面的属性
? * */
?

?

/**
?* javascript用构造函数构造对象的步骤:
?* 1.新建一个对象new Object();
?* 2.将该对象内置的原型对象设置成构造函数引用的原型对象
?* 3.将该对象作为this参数调用构造函数
?* */
?
?/**
? * 基于上面的步骤,测试一
? * 构建一个对象(作为prototype对象使用),将其引用替代某构造函数的prototype对象
? * 即用prototype对象来描述类
? * */

?
?/**
? * 这里的Test1感觉就是个过渡,什么作用都没有起到,这里的test1不管怎么样看都是Cat
? * 可能有人会想,那么我用var obj = new Object()构建一个对象,然后将这个对象的prototype属性找成自己需要的
? * 不就行了吗?
? * 问题在于无法获取到对象的prototype对象
? * */

?

/**
? * 更上一层楼,既然无法获取到prototype,那么我们是否可以构建一个通用的函数,
? * 将所需要的用于构建对象的临时function(如上面的Test1)内嵌
? * */
?

?

/**
? * 最终版
? * */

??
?/**
? * 可能对this会产生迷惑,this表示当前调用该方法的对象,而且同prototype一样,也存在着一个this chain
? * */
?function this_test(){
??this.alert('abc');//那么此方法在执行时,该方法体内并没有alert方法,
??????//那么它就会向上一级的对象中查找alert,谁有alert,this将代表谁,如这里代表window
?}?

热点排行