写点什么

继承

作者:Jason199
  • 2022 年 7 月 10 日
  • 本文字数:2056 字

    阅读完需:约 7 分钟

函数柯理化

        一种函数的封装形式

        把一个函数的两个参数拆开成为两个函数, 每个函数一个参数

          多个参数的时候

          把第一个参数单独提取出来

// 封装: 使用正则去验证用户名    function fn(reg, name) {      return reg.test(name)    }
// 使用的时候 const reg = /[^_]\w{5,11}/ const res = fn(reg, 'guoxiang') const res2 = fn(reg, 'guoxiang3') console.log(res) console.log(res2)// 以闭包的形式进行封装 function testName(reg) { return function (username) { return reg.test(username) } }// res 接收的是 函数内部 返回的函数 const res = testName(/^[^_]\w{5,11}$/)// 真正进行代码开发的时候 const res2 = res('jason') console.log(res2)
复制代码

循环绑定事件    

需求: 给每一个 button 绑定一个点击事件

        点击每一个 button 的时候返回对应这个按钮的索引

以前的解决思路:

        1. 循环的时候存储索引数据在元素身上

        2. 利用闭包

//html部分  <button>1</button>  <button>2</button>  <button>3</button>//js部分var btns= document.querySelectorAll('button')  for (var i = 0; i < btns.length; i++) {      btns[i].onclick = (function (index) {// 随着循环, 每一次这个自执行函数都会执行// 这个被 return 出去的函数才是事件处理函数呢        return function () {          console.log('我执行了')          console.log(index)        }      })(i)    }
复制代码

继承 extend

        构造函数的应用

        当多个构造函数需要使用一些共同的方法或者属性的时候

          我们需要把这些共同的东西单写一个公共的构造函数

        方便其他的构造函数去继承自这个公共的构造函数的属性

        + 概念

          让 乙 构造函数的实例能够使用 甲 构造函数的属性和方法

          我们管 乙 构造函数叫做 甲 构造函数的子类

          我们管 甲 构造函数叫做 乙 构造函数的父类

        + 目的:

          让 乙 构造函数能够使用 甲 构造函数的属性和方法

如果一个 类 继承自 Perosn

        可以使用 name, age, sayHi

// 动物类    function Animal(name, age) {      this.name = name      this.age = age    }    Animal.prototype.say = function () { console.log('各种声音') }// 猫类    function Cat(eye) {      this.eye = eye    }    Cat.prototype.xingwei = function () { console.log('抓老鼠') }  // 鸟类    function Bird(body) {      this.body = body    }    Bird.prototype.fly = function () { console.log('飞') }    const c = new Cat('蓝黄')    console.log(c)    const b = new Bird('翅膀')    console.log(b)
复制代码

原型继承

        利用改变 原型链 的方式来达到继承效果

        直接把父类的实例当作子类的 prototype

构造函数的原型 对象

        我把你的原型赋值为一个新的对象

        new Perosn 的时候, 得到的也是一个新的对象

        核心代码: 字类.prototype = new 父类

原型继承的优缺点

        优点: 构造函数体内和原型上的都可以继承

        缺点:

          1. 一个构造函数的内容, 在两个位置传递参数

          2. 继承来的属性不再子类实例的身上

// 子类    function Student(gender) {      this.gender = gender    }// 直接把父类的实例当作字类的原型对象    Student.prototype = new Person('Jason', 18)     const s = new Student('男')    console.log(s)// 现在开始       //   Student.prototype = {    //    name: 'Jason',   //     age: 18,    //    __proto__: { // Person.prototype    //      constructor: Person,     //     sayHi: function () { },     //     __proto__: Object.prototype    //    }   //   }  //当你 new Student      s = {        gender: '男',        __proto__: {           // Student.prototype 也是 Person 的实例          name: 'Jack',          age: 18,          __proto__: {             // Person.prototype            constructor: Person,            sayHi: function () { },            __proto__: Object.prototype          }        }      }//仔细观察一下这两个的区别,
复制代码

今天是周日 ,学了一天整理出来的也不是很好 ,况且今天时间也比较晚,发现喜欢并把一件事情一直坚持下去是非常快乐的事情,虽然过程很心酸 ,但是这种感觉感觉还是高中那会的感觉 ,希望自己能一直为这件事坚持下去吧。

发布于: 刚刚阅读数: 3
用户头像

Jason199

关注

还未添加个人签名 2022.04.29 加入

一条努力上岸的咸鱼

评论

发布
暂无评论
继承_js_Jason199_InfoQ写作社区