原生JS大揭秘—看清JS繼續實質

JS繼續

理論源於生涯、又高於生涯

在JS中“繼續”,和現實生涯中繼續是類似的

如:兒子繼續父親財富、後代的生理特徵有父母的特徵(身高、膚色、性情等等….)

只是肯定比例上是如許的,不是相對的一樣

JS中繼續要領有以下幾種本質區別要領(特別注重是本質區別)

  • 假裝繼續(也稱之為借用組織函數)

    這類要領完成道理主假如利用了call/apply

      // 定義父“類”(ES6之前JS中沒有嚴厲意義上的“類”觀點)
      function Parent(name, age) {
          this.name = name
          this.age = age
          this.run = function () {
              console.log('run...')
          }
      }
      // 定義子”類“
      Student.prototype.sid=200
      function Student(name, age, sex) {
          var _super = Parent
          // call要領強迫變動this指向,注重這個方向只是純真的操縱當前this對象,並不會影響到其“原型對象”
          _super.call(this, name, age)
          delete _super
          this.sex=sex
      }
      
      var student=new Student("zs",20,"Male")
      console.log(student.name) // zs
      console.log(student.sid) // 200
      
  • 原型鏈繼續

      // 定義父“類”(ES6之前JS中沒有嚴厲意義上的“類”觀點)
      Parent.prototype.lastName='damon'
      function Parent() {
          this.lastName='pool'
      }
      // 定義子”類“
      // 子類的原型指向父類的一個實例對象
      Student.prototype=new Parent()
      function Student() {
      }
      
      var student=new Student()
      // 查找歷程是怎樣的?
      /*
       1、起首會在對象student本身身上查找,
       2、假如找不到,則到原型上查找,那末student的原型是誰?
          student.__proto__===Student.prototype
          而Student.prototype=new Student也就是原型如今指向的是父類的實例
       3、所以到父類的實例上去查找,假如找不到,再到父類實例的原型上查找
       4、假如找不到,則到原型的原型上查找,此時到了Object.prototype身上
          Object.prototype.__proto__===null
       5、假如找不到,則返回undefined
      */
      console.log(student.lastName) // damon
      

還沒有寫完全,待續…

    原文作者:Damon
    原文地址: https://segmentfault.com/a/1190000015331093
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞