浅谈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()方法

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Gb2312转utf-8编码的方法(vbs+js)
  • 如何使用Ajax技术开发Web应用程序(1)
  • js跳转路径问题
  • JavaScript模仿桌面窗口
  • 用js检测两个线段是否相交
  • 我知道的JavaScript -- 设计模式(桥接)应用之 – 验证器
  • 运用JavaScript构建你的第一个Metro式应用程序(on Windows
  • 我是如何去了解jquery的(六),案例之幻灯片轮换
  • Jquery封装幻灯片效果
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1