浅谈JavaScript 继承机制的实现(2)
来源:未知 责任编辑:责任编辑 发表时间:2014-01-25 11:36 点击:次
this.newMethod1(); //调用方法,实现继承
delete this.newMethod1; //删除该对象的引用,避免错误调用
this.newMethod2 = Sex; //对象冒充,指向Sex对象
this.newMethod2(sex); //调用方法,实现继承
delete this.newMethod2; //删除该对象的引用,避免错误调用
}
var chin1 = new Chinese("小明","Male");
<script type="text/javascript">
function Human(){ <span style="white-space:pre"> </span>//定义Human类
this.species = "Human";
}
function Sex(sex) { <span style="white-space:pre"> </span>//定义Sex类
this.sex = sex;
this.species = "Animal"; //因为调用顺序,会替换Human类的species属性
}
function Chinese(name,sex){
this.name = name;
this.newMethod1 = Human; //对象冒充,指向Human对象
this.newMethod1(); //调用方法,实现继承
delete this.newMethod1; //删除该对象的引用,避免错误调用
this.newMethod2 = Sex; //对象冒充,指向Sex对象
this.newMethod2(sex); //调用方法,实现继承
delete this.newMethod2; //删除该对象的引用,避免错误调用
}
var chin1 = new Chinese("小明","Male");
因为是通过调用函数来"继承"的,如果多继承时,父类出现同名属性时,会被优先级高的替代.
例如上面的代码中,Sex类会替换Human类的同名属性.
也可以通过call()和apply()方法来实现继承,
其实原理和对象冒充一样.
[javascript]
function Human(){ //定义Human类
this.species = "Human";
}
function Sex(sex) { //定义Sex类
this.sex = sex;
}
function Chinese(name,sex){
this.name = name;
Human.call(this); <span style="white-space:pre"> </span>//call()方法
Sex.apply(this,[sex]);<span style="white-space:pre"> </span>//apply()方法
}
var chin1 = new Chinese("小明","Male");
function Human(){ //定义Human类
this.species = "Human";
}
function Sex(sex) { //定义Sex类
this.sex = sex;
}
function Chinese(name,sex){
this.name = name;
Human.call(this); <span style="white-space:pre"> </span>//call()方法
相关新闻>>
- Javascript 兼容 IE6、IE7、FF 的“加入收藏”“设为首页”
- 好好学一遍JavaScript 笔记(一)——基础中的基础
- 好好学一遍JavaScript 笔记(二)——encode、数组、对象创建
- 好好学一遍JavaScript 笔记(三)——StringBuffer、prototype
- 好好学一遍javaScript 笔记(四)——Attribute、HTML元素、文档碎
- 好好学一遍JavaScript 笔记(五)——正则表达式基础
- 好好学一遍JavaScript 笔记(六)——正则表达式基础二
- 好好学一遍JavaScript 笔记(七)——RegExp对象与常用正则
- 好好学一遍JavaScript 笔记(八)——冒泡型事件、捕获型事件
- JavaScript详解
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>