有關繼承
有關繼承
function Graph() {
this.vertices = [];
this.edges = [];
}
const g = new Graph();
g.hasOwnProperty('edges')
// true
Graph.prototype.c = 123
// 繼承父親的屬性會在 __proto__ 顯示
g.hasOwnProperty('c')
// false
g.__proto__.hasOwnProperty('c')
// true似乎將
改成
都可以跑,但這樣不是應該會蓋掉Dog的prototype,而找不到name屬性報錯嗎
以上的解釋是
EventEmitter的屬性是後來用
去定義的,而不是一開始的建構子
而下面這三個,只讀的到後來用EventEmitter.prototype.xxx定義的東西
想要繼承到建構子跟後來定義的prototype只能用以下這個方法
可看下面的範例
而使用Dog.prototype= DDog.prototype;也不會覆蓋原本的Dog建構子
避免將函式內的屬性設為name
其他預設屬性也不要使用,拿來命名屬性
使用prototype指定屬性後要用new出新物件後才可使用
delete可用來刪除函式中的方法
如果要刪除prototype加上prototype即可,其子代的該方法也被一併刪除
ES5 With Object.create
更多可參考
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain
Last updated
Was this helpful?