您好,登錄后才能下訂單哦!
這篇文章主要講解了“javascript是不是面向?qū)ο蟆?,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“javascript是不是面向?qū)ο蟆卑桑?/p>
javascript并不是嚴(yán)格意義的面向?qū)ο笳Z言,而是一種基于對(duì)象、事件驅(qū)動(dòng)編程的客戶端腳本語言。原因:面向?qū)ο蟀ㄈ筇卣鳎悍庋b、繼承、多態(tài);而JavaScript中只有封裝,繼承也只是模擬繼承,談不上面向?qū)ο蟆?/p>
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
javascript并不是嚴(yán)格意義的面向?qū)ο笳Z言,而是一種基于對(duì)象、事件驅(qū)動(dòng)編程的客戶端腳本語言;它不僅可以創(chuàng)建對(duì)象,也能使用現(xiàn)有的對(duì)象。
為什么JavaScript不是面向?qū)ο蟮恼Z言?
因?yàn)槊嫦驅(qū)ο蟀ㄈ筇卣鳎悍庋b、繼承、多態(tài)。JavaScript中只有封裝,繼承也只是模擬繼承,談不上面向?qū)ο蟆?/p>
所有說,在JavaScript中,一切都是對(duì)象,屬性、數(shù)組、函數(shù)等等都是對(duì)象。
JavaScript中沒有重載
<script type="text/javascript"> function Student (sno,sname,age) { this.sno = sno; this.sname = sname; this.age = age; this.study = function(){ alert('我是'+this.sname+',我在學(xué)習(xí)') } } var stu = new Student(1,'xiaoming',20); stu.study(); </script>
使用Object類創(chuàng)建即時(shí)對(duì)象
delete stu.name;//可以刪除屬性
示例:
<script type="text/javascript"> var stu = new Object(); stu.sno = 1; stu.sname = 'xiaoming'; stu.age = 20; stu.study = function(){ alert('我是'+this.sname+',我在學(xué)習(xí)'); } stu.study(); </script>
模擬繼承
1、使用call()函數(shù)來模擬繼承
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> function Person (name,age) { this.name = name; this.age = age; this.eat = function(){ alert('姓名:'+this.name+",年齡:"+this.age+",我在吃飯"); } } function Student(sno,name,age){ Person.call(this,name,age);//相當(dāng)于super(name,age) this.sno = sno; this.study = function(){ alert('學(xué)號(hào):'+this.sno+',姓名:'+this.name+",年齡"+this.age+",我在學(xué)習(xí)"); } } var stu = new Student(1,'xiaoming',22); stu.eat(); stu.study(); </script> </head> <body> </body> </html>
2、使用apply()函數(shù)來模擬繼承
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> function Person (name,age) { this.name = name; this.age = age; this.eat = function(){ alert('姓名:'+this.name+",年齡:"+this.age+",我在吃飯"); } } function Student(sno,name,age){ Person.apply(this,[name,age]);//相當(dāng)于super(name,age) this.sno = sno; this.study = function(){ alert('學(xué)號(hào):'+this.sno+',姓名:'+this.name+",年齡"+this.age+",我在學(xué)習(xí)"); } } var stu = new Student(1,'xiaoming',22); stu.eat(); stu.study(); </script> </head> <body> </body> </html>
3、使用原型prototype模擬繼承
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> function Person (name,age) { this.name = name; this.age = age; this.eat = function(){ alert('姓名:'+this.name+",年齡:"+this.age+",我在吃飯"); } } function Student(sno,name,age){ this.sno = sno; this.name = name; this.age = age; this.study = function(){ alert('學(xué)號(hào):'+this.sno+',姓名:'+this.name+",年齡"+this.age+",我在學(xué)習(xí)"); } } //1.創(chuàng)建父類對(duì)象 var person = new Person(); //2.子類.prototype = person; Student.prototype = person; //把父類的原型賦值給子類的原型,原型一致,模擬實(shí)現(xiàn)了繼承。 //但是會(huì)丟失子類的屬性值,全變成了undefined,即使new 對(duì)象時(shí)加上了,也不起作用 //打臉,xiaoming既吃飯也學(xué)習(xí) var stu = new Student(1,'xiaoming',20); //動(dòng)態(tài)的添加方法,即使在new對(duì)象之前沒有這個(gè)方法 Student.prototype.test = function() { alert('test動(dòng)態(tài)添加方法'); } stu.eat(); stu.study(); stu.test(); </script> </head> <body> </body> </html>
通過類的prototype屬性,可以獲知該類有那些屬性和方法。
//1.創(chuàng)建父類對(duì)象 var person = new Person(); //2.子類.prototype = 父類對(duì)象 Student.prototype = person ; //把父類的原型賦值給子類對(duì)象的原型,原型一致,模擬實(shí)現(xiàn)了繼承。
感謝各位的閱讀,以上就是“javascript是不是面向?qū)ο蟆钡膬?nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)javascript是不是面向?qū)ο筮@一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。