探討javascript是不是面向?qū)ο蟮恼Z言
1 它擁有對象,可以包含數(shù)據(jù)和處理數(shù)據(jù)的方法。對象可以包含其它對象。他沒有類(在javascript2.0真正實現(xiàn)之前),但它卻有構(gòu)造器可以做類能做的事,包括扮演變量和方法的容器和角色。他沒有基于類的繼承,但它有基于原型的繼承。兩個建立對象系統(tǒng)的方法是通過繼承和通過聚合。javaScript兩個都有。
2 一些評價說javascript不是真正面向?qū)ο蟮囊驗樗荒芴峁┬畔⒌碾[藏。也就是,對象不能有私有變量和私有方法:所有的成員都是公共的。但隨后有人證明了javaScript對象可以擁有私有變量和私有方法。另外還有批評說javascript不能提供繼承,但隨后有人證明了javascript不僅能支持傳統(tǒng)的繼承還能應(yīng)用其他的代碼復(fù)用模式。
3 說javascript是一種基于對象的語言,是一種正確而略顯保守的判斷,而說javascript不面向?qū)ο?,在我看來則是錯誤的認知,事實上有充足的理由證明javaScript是一種面向?qū)ο蟮恼Z言,只是與傳統(tǒng)的基于類的面向?qū)ο笙啾?,javaScript有它與眾不同的地方,這種獨特性我們稱它為基于原型的面向?qū)ο蟆?/P>
-----------------------------------------
因為js是弱類型語言.不像c++,C#這類型語言!他不支持函數(shù)方法重載.你之前寫一個方法.后面再寫一個相同名字的方法他默認會把上一個方法覆蓋掉!這種情況和PHP中相同!
他不像是C#等語言支持函數(shù)重載.根據(jù)不同的參數(shù).返回值調(diào)用不同的方法!
關(guān)于JS是不是面向?qū)ο?他不完全是面向?qū)ο?他也可以寫成類,方法,屬性.但是和其它的語言稍有不同!比如
var cls={
my:{a:0},
init:function()
{
alert(this.my.a);
}
};
window.onload=function()
{
cls.init();
}
調(diào)用cls.init();
這就是他的類,但是缺少了好多面向?qū)ο蟮囊恍┨匦?樓上說的很清楚!所以說他不是完全面向?qū)ο?/P>
面向?qū)ο笾皇且环N思路一種解決問題的思路!
相關(guān)文章
JS自調(diào)用匿名函數(shù)具體實現(xiàn)
定義一個函數(shù)用做臨時的命名空間,在這個命名空間內(nèi)定義的變量都不會污染到全局命名空間,需要的朋友可以參考下2014-02-02event.X和event.clientX的區(qū)別分析
解釋一下event.X和event.clientX有什么區(qū)別?event.clientX返回事件發(fā)生時,mouse相對于客戶窗口的X坐標(biāo) event.X也一樣但是如果設(shè)置事件對象的定位屬性值為relative2011-10-10詳談js中window.location.search的用法和作用
下面小編就為大家?guī)硪黄斦刯s中window.location.search的用法和作用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02javascript RadioButtonList獲取選中值
js獲取RadioButtonList值的代碼。2009-04-04JavaScript基于ChatGPT實現(xiàn)打字機消息回復(fù)
ChatGPT 是一個基于深度學(xué)習(xí)的大型語言模型,處理自然語言需要大量的計算資源和時間,響應(yīng)速度肯定比普通的讀數(shù)據(jù)庫要慢的多,本文介紹了ChatGPT打字機消息回復(fù)實現(xiàn)原理,感興趣的同學(xué)可以跟著小編一起學(xué)習(xí)2023-05-05