ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-01-28 23:00:29  阅读:108  来源: 互联网

标签:function console log 创建 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>

标签:function,console,log,创建,js,原型,没写,父类,属性
来源: https://blog.csdn.net/weixin_46564011/article/details/122737801

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有