元智大學 資訊工程學系

#請益 js 繼承寫法

2020年1月19日 19:47
想請教各位都是怎麼樣寫繼承的呢? 我自己是看到有上面兩種寫法 第一種應該是ES6的寫法看起來是最正確的 第二種是ES5的,但是出來的結果跟ES6的不同,從chrome開發人員工具可以看出來結構不同 到底要如何正確地寫ES5的繼承呢?
愛心
7
留言 9
文章資訊
共 9 則留言
國立臺灣科技大學 資訊工程學系
ES5 不存在 class 這種東西 所以當然只能用 function + prototype 的方法寫 結構不一樣是正常的
國立高雄第一科技大學 資訊管理學系
你 ES5 寫錯了, 別用 __proto__ function Foo() {} Foo.prototype = {a: 1};
原 PO - 元智大學 資訊工程學系
這樣呢?
樹德科技大學 電腦通訊系
ES5的class也寫錯了,應該是 function Person(name='Default_Name',age=0) { this.name = name this.age = age } Person.prototype.sayHello=function(){ return `Hi, I'm ${this.name}. I'm ${this.age} years old.` }
原 PO - 元智大學 資訊工程學系
B4 你這樣改變我的程式邏輯啦 還是你是從ES6的寫法改回來的? 我的Person不需要帶有參數的建構子 而且ES5沒有function參數預設值可以用 sayHello也沒有要放到Person的prototype sayHello是Person的一個method,而不是Person的原型 這邊想做到的是John繼承了Person後,在John的原型有個method是sayHello ES5其實也沒有`${argument}`可以用,但是+真的有礙觀瞻所以我就不改啦~
國立嘉義大學
js 沒有 class 這個東西 ES6 的語法只是 syntax sugar 請 google prototype-based object oriented
通報 📢 好像有人對這篇文章有新想法唷,快來去看看!
長榮大學
Js 沒有繼承吧 只有this 你應該是要問this 跟原型鏈怎麼寫
國立交通大學
現在比較推薦用合成取代繼承 多用functional programming 的思維去組合函式 js 是有鍊式繼承的 把共用的東西放到或去複寫prototype (不易trace es6只是語法糖 還是會轉回function 建構式 想寫oop 還是去寫真的oop 語言 c++, java 比較方便 他們都有配套的產生器 或 Di framework 寫起來比較方便易維護