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
還沒有寫完全,待續…