类和对象进阶

一.值类型和引用类型

<script>

        function upateNum(num2){

            console.log('num2='+num2);

            num2+=5

            console.log('numn2='+num2);

        }

        let num1 = 5  //number类型

        // 值类型再调用方法传递时,传递的是值

        upateNum(num1)

        console.log('num1='+num1);

        console.log('--------------------');

        function updateArr(arr2){

            console.log('arr2',arr2);

            arr2.push(66)

            console.log('arr2',arr2);

        }

        // 数组是引用类型

        let arr1 =[11,22,33,44,55]

        updateArr(arr1)

        console.log('arr1',arr1);

        // let arr3 =arr1

        // let arr4 =arr1

        // let arr5 =arr1

    </script>


出来效果如图

二.原型对象

<script>

      // 构造函数(类)有原型对象,其实就是构造函数身上的一个自带属性,这个属性是:prototype

      //  对象也有原型对象,其实就是对象身上的一个自带属性,这个属是:_proto_

     // 所有同类型的对象身上的原型对象属性,都指向类的原型对象属性

    //  类和对象的原型对象身上挂的方法,对象可以直接使用,不需要经过原型对象  

      function Student(name,age,sex){

          this.name=name

          this.age=age

          this.sex=sex

          // 如果将方法直接定义在类里面,将来根据这个类创建的每个对象,都要创建自己独立的这些方法

         // 如果要创建很多对象,对内存的开销会很大。

         /*  this.sayHi=function(){

              console.log(`Hi!我叫${this.name},今年${this.age}岁,性别是${this.age}`);

          }

          this.study=function(time){

            console.log(`Hi!我叫${this.name},我每天学习${this.time}小时`);

          }

          this.pla=function(time){

            console.log(`Hi!我叫${this.name},我每天玩${this.play}小时`);

          } */

      }

      // 我们可以将类的方法,添加到类的原型对象身上  

      Student.prototype.sayHi=function(){

              console.log(`Hi!我叫${this.name},今年${this.age}岁,性别是${this.age}`);

          }

      Student.prototype.study=function(time){

            console.log(`Hi!我叫${this.name},我每天学习${time}小时`);

          }

       Student.prototype.play=function(time){

            console.log(`Hi!我叫${this.name},我每天玩${time}小时`);

    }

      let s1=new Student('张三',20,'男')

      let s2=new Student('李四',22,'女')

      let s3=new Student('王五',24,'男')

    //   查了Student类的原型对象

    // console.log(Student.prototype)

    //  查看三个对象的原型对象 -- 你会发现,长得不一样

    // console.log(s1._proto_);

    // console.log(s2._proto_);

    // console.log(s3._proto_);

    s1.sayHi()

    s1.study(8)

    s1.play(3)

    console.log('---------------------------');

    s2.sayHi()

    s2.study(6)

    s2.play(6)

    console.log('-------------------------------');

    s3.sayHi()

    s3.study(10)

    s3.play(1)

    </script>


出来效果如图
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容