js的对象继承的讲解

本文介绍了JavaScript中多种实现继承的方法,包括对象冒充、使用call和apply方法、原型链继承及结合构造函数与原型链的复合继承等。每种方法都通过实例进行了详细解释。

原文出处:http://www.2cto.com/kf/201208/148873.html

//javascript中的继承--第一种继承方式:对象冒充
  function Parent(name)
  {
   this.name = name;
   this.getInfo = function()
   {
    document.write("父亲的名字是:"+ name +"<br/>");
   }
  }
  function Child(name, age)
  {
   //这是继承父类的最重要的三行代码
   this.mehod = Parent;//这句代码是将Parent这个对象赋给this.method,即继承父类的属性和方法过来了。
   this.mehod(name);//这句代码是初始化父类的一个属性
   delete this.method;//删除,因为menthod已没有作用了
  
   this.age = age;
   this.getChildInfo = function()
   {
    document.write("儿子的名字是:"+this.name +" , 年龄是:"+this.age);
   }
  }
 
  var parent = new Parent("爸爸");
  //parent.getInfo();
  var child = new Child("儿子",24);
  //child.getInfo();
  //child.getChildInfo();

 

//call方法是属于每一个Function的一个方法,因此我们定义的每一个函数都有此方法,call方法的第一个参数是要传递给this的,后面的参数一次传递给函数中的参数
  function Test(name, age)
  {
   this.name = name;
   this.age = age;
  
   this.getInfo = function()
   {
    document.write("name:"+this.name+" , age:"+this.age);
   }
  }
  var obj1 = new Object();
  obj1.sex = "男";
  obj1.get = function()
  {
   document.write("name:"+this.name+" age:"+this.age+" sex"+this.sex);
  }
  //text.call的调用相当于test的调用
  //注意:相当于obj1继承了test函数,继承了它的属性和方法。
  Test.call(obj1,"曹欢",21);
  alert(obj1.name);
  obj1.getInfo();
  obj1.get();

 

//call方法实现继承
  /*function Parent(name)
  {
   this.name = name;
   this.getParentInfo = function()
   {
    document.write("name:"+this.name+"<br/>");
   }
  }
 
  function Child(password)
  {
   Parent.call(this,"曹欢");
   this.password = password;
   this.getChildInfo = function()
   {
    document.write("name:"+this.name+",password:"+this.password+"<br/>");
   }
  }
 
  var p = new Parent("a");
  //p.getParentInfo();
  var c = new Child("123456");
  //c.getParentInfo();
  //c.getChildInfo();

 

//对象继承的第三种方法apply与call用法基本一致
  function Parent(name)
  {
   this.name = name;
   this.getInfo = function()
   {
    document.write("name:"+this.name,"<br/>");
   }
  }
 
  function Child(password)
  {
   Parent.apply(this,["曹欢"]);//与call的区别,就是从第二个参数开始传递的是一个数组,而call传递的是一个个的参数
   this.password = password;
   this.getChildInfo = function()
   {
    document.write("name:"+this.name+" , password:"+this.password,"<br/>");
   }
  }
 
  var p = new Parent("a");
  //p.getInfo();
  var c = new Child("密码");
  //c.getInfo();
  //c.getChildInfo();

 

//原型链的方式实现继承,缺陷是无法给构造函数传递参数。
  function ParentPrototype(){}
  ParentPrototype.prototype.name = "张三";
  ParentPrototype.prototype.getInfo = function()
  {
   document.write("name:"+this.name+"<br/>");
  }
  function ChildPrototype(){};
  //集成的关键就是这句代码
  ChildPrototype.prototype = new ParentPrototype();
  ChildPrototype.prototype.password = "密码";
  ChildPrototype.prototype.getAllInfo = function()
  {
  alert("asd");
   document.write("name:"+this.name+", password:"+this.password);
  }
 
  var child = new ChildPrototype();*/
  //child.getInfo();
  //child.getAllInfo();
  //可以传递参数的原型链继承方法(复合):推荐使用该方法
 
  function ParentFh(name)
  {
   this.name = name;
  }
  ParentFh.prototype.getInfo = function()
  {
   document.write("name:"+this.name,"<br/>");
  }
 
  function ChildFh(name, password)
  {
   this.password = password;
   ParentFh.call(this,name);
  }
  ChildFh.prototype = new ParentFh();
  ChildFh.prototype.getAllInfo = function()
  {
   document.write("name:"+this.name+" , password:"+this.password);
  }
  var parentFh = new ParentFh("曹欢");
  parentFh.getInfo();
  var childFh = new ChildFh("曹娟","密码");
  childFh.getAllInfo();


基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究(Matlab代码实现)内容概要:本文围绕“基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究”,介绍了利用Matlab代码实现配电网可靠性的仿真分析方法。重点采用序贯蒙特卡洛模拟法对配电网进行长时间段的状态抽样与统计,通过模拟系统元件的故障与修复过程,评估配电网的关键可靠性指标,如系统停电频率、停电持续时间、负荷点可靠性等。该方法能够有效处理复杂网络结构与设备时序特性,提升评估精度,适用于含分布式电源、电动汽车等新型负荷接入的现代配电网。文中提供了完整的Matlab实现代码与案例分析,便于复现和扩展应用。; 适合人群:具备电力系统基础知识和Matlab编程能力的高校研究生、科研人员及电力行业技术人员,尤其适合从事配电网规划、运行与可靠性分析相关工作的人员; 使用场景及目标:①掌握序贯蒙特卡洛模拟法在电力系统可靠性评估中的基本原理与实现流程;②学习如何通过Matlab构建配电网仿真模型并进行状态转移模拟;③应用于含新能源接入的复杂配电网可靠性定量评估与优化设计; 阅读建议:建议结合文中提供的Matlab代码逐段调试运行,理解状态抽样、故障判断、修复逻辑及指标统计的具体实现方式,同时可扩展至不同网络结构或加入更多不确定性因素进行深化研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值