基于對象就是說,Javascript中所有的東西都是對象。也包括內(nèi)置對象。如:String、Number、Boolean等這種基本對象類型。
創(chuàng)新互聯(lián)憑借在網(wǎng)站建設、網(wǎng)站推廣領域領先的技術能力和多年的行業(yè)經(jīng)驗,為客戶提供超值的營銷型網(wǎng)站建設服務,我們始終認為:好的營銷型網(wǎng)站就是好的業(yè)務員。我們已成功為企業(yè)單位、個人等客戶提供了網(wǎng)站設計、成都網(wǎng)站建設服務,以良好的商業(yè)信譽,完善的服務及深厚的技術力量處于同行領先地位。
function Aobj(name, age){
this.name = name;
thia.age = age;
}
一般人會解理Aobj是一個函數(shù),其實你可以把它當做對象的
var a = new Aobj("張三",12);
alert(a.name);//張三
alert(a.age);//12
完全是可以這樣做的。
原型,prototype,應該指的是設計模式中的原型模式,我猜說JavaScript基于原型,意思是JavaScript語言在設計的時候充分貫徹了原型模式的思想
JavaScript 是屬于網(wǎng)絡的腳本語言,ECMA-262 是 JavaScript 標準的官方名稱。
JavaScript 由 Brendan Eich 發(fā)明。它于 1995 年出現(xiàn)在 Netscape 中(該瀏覽器已停止更新),并于 1997 年被 ECMA(一個標準協(xié)會)采納。
希望對你有幫助,望采納!
有三個核心概念:
一切事物皆對象,(tips: javascript 中除了兩個特殊值undefined 和 null.)
對象具有封裝和繼承特性
對象與對象之間使用消息通信,各自存在信息隱藏。
OK,基于這三點,我們再來看,
C++ 是半面向?qū)ο蟀朊嫦蜻^程語言,因為,雖然他實現(xiàn)了類的封裝、繼承和多態(tài),但存在非對象性質(zhì)的全局函數(shù)和變量。
Java、C# 倒是完全的面向?qū)ο笳Z言,通過類的形式組織函數(shù)和變量,使之不能脫離對象存在。但這里函數(shù)本身是一個過程,只是依附在某個類上。
然而,面向?qū)ο髢H僅是一個概念或者編程思想而已,它不應該依賴于某個語言存在。比如 Java 采用面向?qū)ο笏枷霕嬙炱湔Z言,它實現(xiàn)了類、繼承、派生、多態(tài)、接口等機制。但是這些機制,只是他實現(xiàn)面向?qū)ο缶幊痰囊环N手段而已,而非必須。
換句話來說就是,一門語言是可以根據(jù)其自身特性選擇合適的方式來實現(xiàn)面向?qū)ο?,一個女生是可以根據(jù)自身特色來選擇合適的著裝來展現(xiàn)自己,至于穿什么樣的衣服,it’s up to you!
由于大多數(shù)人,像我們都是首先學習或者使用的是類似 Java、C++ 等高級編譯型語言,先入為主地接受了“類”這個面向?qū)ο髮崿F(xiàn)方式,從而在學習腳本語言的時候,習慣性地用類式面向?qū)ο笳Z言中的概念來判斷該語言是否是面向?qū)ο笳Z言,或者是否具備面向?qū)ο筇匦?。實際上,JavaScript語言是通過一種叫做原型(prototype)的方式來實現(xiàn)面向?qū)ο缶幊痰?。它和其他的面向?qū)ο箢惥幊陶Z言一樣,只是它的實現(xiàn)方式不同而已,或者說他們采用了不同的面向?qū)ο笤O計哲學。
你預先接受了穿裙子才顯得好看,所以你用這個“穿裙子”去評判別人穿著,但你不能說穿牛仔褲的她就是不好看的,對吧?別人只是選擇了牛仔褲來展現(xiàn)自己。。So, java 選擇了“類繼承”, javascript 就是選擇的“原型繼承”來展示自己。
讓我們從大家熟悉的類繼承入手,
類繼承就是在函數(shù)對象內(nèi)調(diào)用父類的構造函數(shù),使得自身獲得父類的屬性和方法。
但是原型繼承呢,繼承不在對象本身,而是在對象的原型上。子類的構造函數(shù)中不擁有父類對象的方法和屬性。
那么讓我們看一個簡單的例子來和“原型繼承”初次見面一下。
var Person = function(name, city){
this.name = name;
this.city = city || "China";
}
var jean = new Person("Jean"); //new 一個新對象
console.log(jean.__proto__.constructor);//私有鏈接,指向構造函數(shù)Person的原型123456123456
這里,大家是不是覺得很熟悉,因為寫法跟“類繼承“很相似啊。其實javascript還是沿襲了類繼承的形式,聽起來有點不倫不類,但是也許就是因為這種妥協(xié),讓javascript更容易被大多數(shù)人所接受,成為了現(xiàn)在最流行的原型繼承語言也說不定呢~~
用大白話說,在做個對比,在舉個例子你就懂了?。?/p>
說到基于基于面向?qū)ο蟪绦蛟O計(后面就不用了就“基于對象”)
在這之前是“基于過程”
過程和對象的區(qū)別(主要):
過程沒有辦法重復使用。例如:1+2+3這就是一個過程(答案是6)
---?。?!它沒有辦法重復使用 (當改為4+5+6你又要重新寫代碼)
說對象了它可以重復使用。列如:a+b+c命名為 A (a,b,c)對象
A是對象名, a,b,c分別是對象的參數(shù), a+b+c是對象的主體(對象的過程)
----!!!!!他可以重復使用
A(1,2,3)這就是對象調(diào)用 結果是6;(你不需要寫成1+2+3)
A(4,5,6)這就是對象調(diào)用 結果是15;(你不需要寫成4+5+6)
當然這是個例子(對象的主體比較簡單)
-------------所以對象就是有相同過程的集合-------------------
~~~~~~~~~~~為什么叫對象 因為這是從object翻譯的(外國人那邊)~~~
JavaScript是否面向?qū)ο螅且粋€有爭議的話題!
JavaScript是“基于對象”的語言,這種說法基本上是正確的,但是,另一些人堅持JavaScript是“面向?qū)ο蟆钡?,而這個看法,應該說是更加準確的。不過需要注意,“基于對象”和“面向?qū)ο蟆笔莾蓚€不同層次的概念。
面向?qū)ο蟮娜筇攸c(封裝,延展,多態(tài))缺一不可。通常“基于對象”是使用對象,但是不一定支持利用現(xiàn)有的對象模板產(chǎn)生新的對象類型,繼而產(chǎn)生新的對象,也就是說“基于對象”不要求擁有繼承的特點。而“多態(tài)”表示為父類類型的子類對象實例,沒有了繼承的概念也就無從談論“多態(tài)”,現(xiàn)在的很多流行技術都是基于對象的(例如DOM),它們使用一些封裝好的對象,調(diào)用對象的方法,設置對象的屬性,但是它們無法讓程序員派生新對象類型,他們只能使用現(xiàn)有對象的方法和屬性,所以當你判斷一個新技術是否是面向?qū)ο蟮臅r候,通??梢允褂煤髢蓚€特性加以判斷,“面向?qū)ο蟆焙汀盎趯ο蟆倍紝崿F(xiàn)了“封裝”的概念,但“面向?qū)ο蟆睂崿F(xiàn)了“繼承”和“多態(tài)”,而“基于對象”可以不實現(xiàn)這些。
通常情況下,面向?qū)ο蟮恼Z言一定是基于對象的,而反之則不成立。