亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在JavaScript中可以使用什么技術來定義類,它們的權衡是什么?

在JavaScript中可以使用什么技術來定義類,它們的權衡是什么?

郎朗坤 2019-07-02 14:43:41
在JavaScript中可以使用什么技術來定義類,它們的權衡是什么?我更喜歡在大型項目中使用OOP,就像我現在正在做的那樣。我需要用JavaScript創建幾個類,但是,如果我沒有弄錯的話,至少有幾種方法可以做到這一點。語法是什么?為什么要這樣做?我想避免使用第三方庫-至少一開始是這樣的。為了尋找其他答案,我找到了這篇文章用JavaScript進行面向對象的編程,第一部分:繼承-DocJavaScript討論JavaScript中的面向對象編程。有沒有更好的繼承方法?
查看完整描述

3 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

在JavaScript中定義類的最佳方法是不定義類。

我是認真的。

面向對象有幾種不同的風格,其中一些是:

  • 基于類的OO(第一次由Smalltalk引入)
  • 基于原型的OO(首先由Self引入)
  • 基于多方法的OO(我認為首次由CommonLoops引入)
  • 基于謂詞的OO(不知道)

也許還有一些我不知道的人。

JavaScript實現了基于原型的OO。在基于原型的OO中,新對象是通過復制其他對象(而不是從類模板中實例化)創建的,方法直接存在于對象中而不是類中。繼承是通過委托完成的:如果對象沒有方法或屬性,則會在其原型(即從其克隆的對象)上查找該對象,然后再查找原型的原型,以此類推。

換句話說:沒有課。

JavaScript實際上對該模型進行了很好的調整:構造函數。也就是說,你不僅可以通過復制現有的物體來創建對象,還可以通過“稀薄的空氣”來構造它們。如果使用new關鍵字,則該函數將成為構造函數,而this關鍵字不會指向當前對象,而是指向新創建的“空”對象。因此,您可以任意配置對象。這樣,JavaScript構造函數就可以在傳統的基于類的OO中扮演類的角色:充當新對象的模板或藍圖。

現在,JavaScript是一種非常強大的語言,因此實現一個基于類的面向對象系統非常容易。在JavaScript中如果你想的話。但是,只有當您確實需要它時才應該這樣做,而不僅僅是因為Java就是這樣做的。


查看完整回答
反對 回復 2019-07-02
  • 3 回答
  • 0 關注
  • 334 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號