嗯,我一直在通過Mozilla開發者網絡(mdn)最近閱讀Javascript繼承模型。我是一個point.Here的代碼混淆高度從MDN:繼承和原型鏈
function Graph() {
this.vertices = [];
this.edges = [];
}
Graph.prototype = {
addVertex: function(v) {
this.vertices.push(v);
}
};
var g = new Graph();
console.log(g.hasOwnProperty('vertices'));// true
console.log(g.hasOwnProperty('addVertex'));// false
console.log(g.__proto__.hasOwnProperty('addVertex'));// true
清楚我不明白的是,爲什麼g.hasOwnProperty(「addVertex」)產生錯誤的,因爲addVertex爲g雖然屬性它是在Graph的原型中定義的,但它仍然是Graph的一部分。另外我還有一個問題,即如果某個對象從g繼承(或者說Graph),它將只繼承addVertex(在Prototype的函數中定義的那些),否則它將繼承圖的所有三個屬性即頂點,邊和addVertex。謝謝您的幫助!
出於好奇,因爲您花時間學習新東西,爲什麼不直接升級到ES6課程?它更具可讀性並具有相同的性能。 – Kokodoko
是的,我期待他們,但我現在我聽說他們只是一種syntatical糖和JS仍然是基於原型的語言 – TheHumbleGhost
是的,但這是沒有理由不使用它:)但都在適當的時間。瞭解你所能做的,並決定什麼對你有用。 – Kokodoko