簡體   English   中英

有什么類似於Java中JavaScript的“原型”嗎?

[英]Is there anything similar to JavaScript's “prototype” in Java?

是的,所以我對Java相當了解,但是我從未深入研究JavaScript。 我正在和一個認識JavaScript的熟人聊天,但是他還沒有研究Java。 他向我介紹了JavaScript比Java的優勢,即它的功能而不是用途。

具體來說,他是在告訴我有關“原型”的知識,他所解釋的似乎是多態性和繼承的概念,但沒有類。 這是真的?

我告訴這個人,這似乎是這樣,他告訴我原型制作根本不像繼承或多態性,他告訴我進行研究。 Google在比較這兩種語言方面並沒有提供太多幫助,因此我在這里希望找到能夠同時了解這兩種語言的人。

從某種意義上說,它是相似的,它是所有對象的父代,也就是javascript中繼承自它的函數。 Java繼承在擴展對象以及使用接口和抽象類方面定義得更好。 Javascript具有低類型抽象。 一切都是功能。 一切都可以隨意添加屬性。 沒有定義的繼承。 如果您跟蹤JavaScript中調用的堆棧跟蹤,則它將從最頂部的函數開始,一直到原型,直到找到您要查找的調用為止。 另一方面,Java將查看直接函數或變量的調用和返回。 它也將遍歷對象父對象,但向上移動。 JavaScript中的所有內容均基於功能,而Java中的所有對象均基於Object。

通過調用JavaScript中的Object.create而不是Java中的擴展來實現多態。 OOJS在原型繼承與對象繼承方面截然不同。 在Java中

Javascript是一種功能語言,因此Javascript中的對象是由函數創建的。 Java是面向對象的,函數(方法)屬於對象。

Java腳本也是動態類型的,因此對象在運行時獲得類型,並且確實具有繼承和多態性的元素,但是它不是通過諸如Java類的靜態類型系統來強制執行的。

原型與編寫函數以創建特定類型的新對象並聲明現有類型是該新類型的原型的過程相關。

新類型將具有舊類型的所有屬性以及任何新聲明的屬性。 因此,它有點像繼承和多態,但是沒有類型來強制執行它,因此,如果您超出類的定義范圍,則在運行時將得到的所有值都是未定義的值。

從使用角度來看,任何對象的客戶端代碼都可以將其視為鏈上的任何原型,因此可以繼承和實現多態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM