js 是乙個基於原型繼承的語言
class studentsay () , 我今年 $ 歲, 我的學號是 $`)
}}let liming = new student('李明', 18, '0001') //
通過類 new 物件/例項
console.log(liming.name) //
李明console.log(liming.age) //
18liming.say() //
我是 李明, 我今年 18 歲, 我的學號是 0001
//instanceof 判斷這個變數屬於哪個 class 用於識別正在處理的物件的型別。與 typeof 方法不同的是,instanceof 方法要求開發者明確地確認物件為某特定型別。父類class people
eat () 會吃飯`)
}}//
子類 學生
class student extends people
say () , 我今年 $ 歲, 我的學號是 $`)
}}//
子類 老師
class teacher extends people
teach () , 我今年 $ 歲, 我教授 $`)
}}//
例項const liming = new student('李明', 18, '001')
console.log(liming.name)
//李明
liming.eat() //
李明 會吃飯
liming.say() //
我是 李明, 我今年 18 歲, 我的學號是 001
//例項
const wanglaoshi = new teacher('王老師', 30, '語文')
console.log(wanglaoshi.name)
//王老師
wanglaoshi.eat() //
王老師 會吃飯
wanglaoshi.teach() //
我是 王老師, 我今年 30 歲, 我教授 語文
console.log( instanceof array) //隱式原型和顯式原型true
console.log( instanceof object) //
true
console.log({} instanceof object) //
true
console.log(liming
instanceof student) //
true
console.log(liming instanceof people) //
true
console.log(liming instanceof object) //
true
//**關係class 實際是函式, 是es6的語法糖
console.log(typeof people) //
function
console.log(typeof student) //
function
//隱式原型(__proto__)型和顯式原型(prototype)
console.log(liming.__proto__) //
例項物件的 隱式原型
console.log(student.prototype) //
被例項類的
console.log(liming.__proto__ === student.prototype)
原型關係
基於原型的執行規則
原型鏈**
//hasownproperty() 方法返回乙個布林值,判斷物件是否包含特定的自身(非繼承)屬性。
//這裡來驗證一下是不是通過原型鏈繼承的屬性
console.log(liming.hasownproperty('name')) //
true
console.log(liming.hasownproperty('eat')) //
false
那麼 hasownpropert() 方法很顯然來自 object
可以結合原型鏈的思維去理解 instanceof
a instanceof array 準確判斷乙個變數是不是陣列
class jquerythis.length =length
}get (index)
each (fn)
}on (type, fn) )
}//擴充套件很多 api dom 操作}//
擴充套件性 - 外掛程式機制
jquery.prototype.dialog = function
(info)
//擴充套件性 - 複寫機制(造輪子)
class myjquery extends jquery
//擴充套件自己的方法
dialog2 (info)
}
原型 和 原型鏈
每乙個js物件 null除外 都和另乙個物件相關聯。另乙個 物件就是我們熟知的原型,每乙個物件都從原型繼承屬性。所有通過物件直接量建立的物件都具有同乙個原型物件,並可以通過js object.prototype 獲得對原型物件的引用。通過關鍵字new和構造函式呼叫建立的物件的原型就是建構函式的 pr...
原型和原型鏈
原型鏈 例項物件與原型之間的連線,叫做原型鏈 function human human.prototype.age 22 var a new human console.log a.age 這裡的age掛載到了human的原型上面了。其實原型就是乙個物件。a為什麼能找到原型上面的物件呢?這裡例項物件...
原型和原型鏈
建構函式 function foo name age function 其實是 var a new object 的語法糖 var a 其實是 var a new array 的語法糖 function foo 其實是 var foo new function 的語法糖 new乙個物件的過程 建立乙...