js对象创建与继承(没写完)

2022/1/28 23:05:49

本文主要是介绍js对象创建与继承(没写完),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript">
  /*
   对象创建:我认为只用3种即可!
   */
  /*
  第一种
   */
  function Obj1(name,age){
    this.name=name;
    this.age=age;
  }
  Obj1.prototype.showMessage=function(){
      console.log("Obj1的属性:名字:"+this.name+",年龄:"+this.age);
  }
  var obj1=new Obj1("万恶的小明",18);
  obj1.showMessage();
  /*构造函数式创建,这种方式实例化的对象都是通过原型模板来创建的基本创建语句只用写一次*/
    obj1.getContent=function(){
        console.log("这是Obj1模板构建出来的对象之一");
    }
  /**
   * 所有对象通用一个原型模板后期可以给想要添加方法或属性的实例化对象添加 不会影响其他对象且不用重复去写创建类模板的语句
   * 这是用java的人最熟悉只有小改动
   * 他的优势应该在于方便去创建不确定的属性,
   */
  /*第二种是直接创建对象,他适合用于使用一次就丢,且属性确定的对象*/
  var obj2={
      name:'obj2',
      age:15,
      howMessage:function(){
          console.log("Obj1的属性:名字:"+this.name+",年龄:"+this.age);
      }
  }
  /*三就是工厂模式
  * 可以用来快速创建对象*/
  function Person(name,age){
      var obj={
          name:name,
          age:age,
          howMessage:function(){
              console.log("Obj1的属性:名字:"+this.name+",年龄:"+this.age);
          }
      }
      return obj;
  }
  console.log('-------------------------------------')
/************************************************js中的继承**********************************************/
function SuperFather()
{
    console.log("父类构造")
}
SuperFather.prototype.superShow=function(){
    console.log("父类show方法")
}
function SubSon(){
    console.log("子类构造")
}
SubSon.prototype.subShow=function(){
    console.log("子类show方法")
}
//SubSon.prototype=SuperFather.prototype;//
  //这两种方法只是让子类中所有原型属性变成父类的原型属性,但构造不变,子类原型中的属性全部被替换
//var h1=new SubSon();
  console.log('-------------------------------------')
  SubSon.prototype=new SuperFather();
  h1=new SubSon();
  SubSon.constructor();
  SubSon.prototype.constructor();
  console.log('摊牌---------------');
/*
算了直接摊牌吧
这应该是原型的继承
 */
  //1.SubSon.prototype=SuperFather.prototype;
// 2.SubSon.prototype=new SuperFather();
/*
他是这样的1.类型的继承他是子原型只继承(实质是替换和增添)父原型的原型属性 无法调用父类的构造
2.他是将整个实例(实例就是构造函数+原型(模板的)属性全部给塞到子原型的原型属性中,子的原型属性就是实例对象,可以调用父类的所有原型属性与构造函数,)
优点是:父类的一切都可被子类继承使用,子类还可在原型中继续添加新的属性增强
缺点中:1.继承单一 X: 我不认为他继承单一给子类原型中添加任意属性 ,属性赋值父类的实例得到父类的一切 可多个 //但是这里我有自己的见解 反正不急
      2:所有新实例都会共享父类原型的属性 父类原型的改变会改变各个子类 比如添加或删除原型中的属性
      3. 新实例无法向父类构造函数传参
      //我的js高级其实已经全部看完了,现在就是清算
  //因为看完啦之后要比对一下 自我认知
  //我在看别人的博客来理解
  //我觉得比较好的博客:https://www.cnblogs.com/ranyonsue/p/11201730.html
 */
  /*构造函数的继承*/
  function FunExtend(){
      SuperFather.call(this);
  }
  var fun1=new FunExtend();
  fun1.superShow;//为什么可以运行呢?
  //今天先到这


</script>
</body>
</html>



这篇关于js对象创建与继承(没写完)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程