【前端】JS---OOP

这篇博客主要介绍了JavaScript中的面向对象编程(OOP)概念,包括构造函数的作用、原型的继承以及OOP的三大特征:封装、继承和多态。在原型继承部分,强调了避免浅拷贝的问题,并提到了两种实现深拷贝的方法:递归的for in循环和JSON.parse(JSON.stringify)。此外,还补充了一些额外的JavaScript技巧,如数组去重、反转字符串和计算数字的n次方。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习内容:

一、OOP:

  1.OOP的语法

      语法:

  1).new Object()

        var obj=new Object();



      obj.sum=function(a,b,d){

          // this指向函数的拥有者

          return a+b+c+this.ns;

     }
 2).JSON

      var xyj = {

          description: "人与自然",

          sale: function (price) {

              console.log(price)

         },

          author: "施耐庵"

      }
 3).工厂模式

      function createBook(author, price, type) {

          return {

              author: author,

              price: price,

              type: type

          }

      }

      var b = createBook("我替你记得", 25, "散文");

     4).构造函数:

      (1).构造函数:开辟内存空间

           析构函数:释放内存空间

 注:不要把函数或公共资源写在构造函数里,容易造成内存的浪费

        公共资源写在原型中

       原型需要使用构造函数的名字来调用

       原型是一块独立的内存空间,本质是个对象

   面试题:

         构造函数主要通过call( )或者apply( )实现

         工作原理:改变this指向

         Call( this,参数1,参数2……)

         Apply( this,[参数列表])

      (2)OOP的思想

        OOP: 提升效率

      (3)三大特征:封装 继承 多态

二、原型的继承

     1.这是个浅拷贝,不要这样写

        Eg:  Dog.prototype=Animal.prototype;

         需要用深拷贝来完成继承

如何实现一个深拷贝:

      1).for in  (递归)

  For in 只能对第一层深拷贝,如果里面的数据是引用数据类型,就是浅拷贝了

        Eg: for (x in Animal.prototype) {

               Dog.prototype[x] = Animal.prototype[x]

           }

      2).JSON

        Dog.prototype=JSON.parse(JSON.stringify)

    2.继承补充内容:

      1).数组去重

 Array.prototype.SingleArr = function () {

        var newArr = [];

        this.forEach(function (item) {

            newArr.indexOf(item) === -1 ?

                newArr.push(item) : null;

        })

        return newArr;

    }

    2).反转字符串

 function reverseString(str) {

        return str.split('').reverse().join('')

    }

    String.prototype.reverseStr = function () {

        return this.split('').reverse().join('')

    }

  3).一个数字的n次方

 function fang(n, m) {

        return

    }

    var a = n ** m;    //n的m次方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羊️里个雲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值