JS基本功系列-原型里面2个知识点记录

admin 2022年4月23日03:10:45评论30 views字数 2156阅读7分11秒阅读模式
 Professor.prototype.tSkill = 'Java';

  function Professor({
  }

  var professor = new Professor();
  Teacher.prototype = professor;

  function Teacher({
    this.mSkill = 'JS/JQ'
    this.students = 500;//原生类型
    this.success = {   //引用类型(主要是函数,数组,对象)
      alibaba'28',
      tencent'30'
    }
  }

  var teacher = new Teacher();

  Student.prototype = teacher;

  function Student({
    this.pSkill = 'HTML/CSS'
  }

  var student = new Student();
  student.students++;//<===>student.students = student.students + 1;
                     // student自己本身其实是没有students这个属性的,那这里就增加一个属性,而后再把501赋值给这个属性
                      //类似于下面这个代码:
                     // var obj bj= {name:'obj'};  obj.age = 13;
                    //而后Student的属性里面就有了students:501
  student.success.baidu = '100';
  console.log(student, teacher);
  //student:
//   Object { pSkill: "HTML/CSS", students: 501 }
// pSkill: "HTML/CSS"
// students: 501
// <prototype>: Object { mSkill: "JS/JQ", students: 500, success: {…} }
//   mSkill: "JS/JQ"
//   students: 500
//   success: Object { alibaba: "28", tencent: "30", baidu: "100" }
//   alibaba: "28"
//   baidu: "100"
//   tencent: "30"
//   <prototype>: Object { … }
//     <prototype>: Object {  }
//       <prototype>: Object { tSkill: "Java", … }
//         constructor: function Professor()
//         tSkill: "Java"

  //teacher:
//   Object { mSkill: "JS/JQ", students: 500, success: {…} }
// mSkill: "JS/JQ"
// students: 500
// success: Object { alibaba: "28", tencent: "30", baidu: "100" }
// <prototype>: Object {  }
//   <prototype>: Object { tSkill: "Java", … }
//     constructor: function Professor()
//     tSkill: "Java"

  //子代可以更改父代里面的引用类型数据
  //子代不能更改父代里面的原生类型数据

  //小结:原型链的终点:
  // 1. Object.prototype
  //2.Object.prototype的属性里面有个toString的方法

  function Car({
    this.brand = 'Benz';
  }
  Car.prototype = {
    brand'Mazda',
    introfunction({
      console.log('我是' + this.brand + '车');
    }
  }
  var car = new Car();
  // this指向实例对象本身
  car.intro(); // 我是Benz车; car这个实例对象调用的intro方法
  // 直接访问原型
  Car.prototype.intro(); // 我是Mazda车; Car.prototype(注意:prototype也是一个对象)调用的intro方法

  //其实整个调用过程为: 先到构造函数里面找有没对应的属性或者方法,没有的话再到prototype里面去找


原文始发于微信公众号(迪哥讲事):JS基本功系列-原型里面2个知识点记录

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月23日03:10:45
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   JS基本功系列-原型里面2个知识点记录http://cn-sec.com/archives/916848.html

发表评论

匿名网友 填写信息