javascript
JavaScript面向对象编程笔记
JavaScript版本的問題:
在開發(fā)過程中經(jīng)常會碰到一些版本問題,在看一些文章的時候經(jīng)常沒有說明一下運(yùn)行的環(huán)境及相關(guān)的軟件版本等,可能造成很大的誤解。
目前常用的版本是JavaScript1.2,如? <SCRIPT LANGUAGE="JavaScript1.2"></script>,如果沒有寫版本號,默認(rèn)按最高的版本運(yùn)行。如:<SCRIPT LANGUAGE="JavaScript"></script>
還有兩個版本是 <SCRIPT LANGUAGE="JavaScript1.0"></script>和<SCRIPT LANGUAGE="JavaScript1.1"></script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
?<HEAD>
? <TITLE> 腳本測試窗口 </TITLE>
? <META NAME="Generator" CONTENT="EditPlus">
? <META NAME="Author" CONTENT="">
? <META NAME="Keywords" CONTENT="">
? <META NAME="Description" CONTENT="">
? <SCRIPT LANGUAGE="JavaScript1.2">
? <!--
??? var homer = {name:'adfsadf',age:34,married:true} //這種創(chuàng)建對象的方式只適用于1.1及以后的版本。
??? function Rectangle(w,h)//構(gòu)造函數(shù)
??? {
??????? this.width = w;
??????? this.height = h;
??????? return null; //這行可以不寫。(測試用)如果在1.0版本中,構(gòu)造函數(shù)返回值后,后面的ret1就是null了,當(dāng)取ret1.width的時候就會報(bào)錯。
??? }
??? function Test(obj)
??? {
??????? //delete homer.name;//在1.2版本中新增加的功能,可以完成把這個屬性刪除。以前的版本只能實(shí)現(xiàn)homer.name=null 的效果。
//??????? for(var i in homer)
//??????? {
//??????????? alert(i);
//??????? }
??????? var ret1 = new Rectangle(11,12);
??????? alert("測試成功!"+ ret1.width + "|"+ ret1.height);
??????? var ret2 = new Rectangle(13,12);
??????? alert("測試成功!"+ ret2.width + "|"+ ret2.height);
??? }
? //-->
? </SCRIPT>
?</HEAD>
?<BODY>
? <INPUT TYPE="button" name="btn1" value="測試" οnclick="Test(this);">
?</BODY>
</HTML>
方法:
在1.0的時候只能這樣定義對象的方法:
??? function Rectangle(w,h)//構(gòu)造函數(shù)
??? {
??????? this.width = w;
??????? this.height = h;
??????? this.area = compute_area;//在1.0的時候只能這樣寫或者這樣寫@1
??????? return null; //這行可以不寫。(測試用)如果在1.0版本中,構(gòu)造函數(shù)返回值后,后面的ret1就是null了,當(dāng)取ret1.width的時候就會報(bào)錯。
??? }
??? function compute_area()
??? {
??????? return this.width * this.height;
??? }
??? function Test(obj)
??? {
???????
??????? var ret1 = new Rectangle(11,12);
??????? ret1.area = compute_area; //在1.0的時候只能這樣寫或者這樣寫:查看@1
???????
??????? alert("測試成功!"+ ret1.width + "|"+ ret1.height + "|"+ret1.area()+ "|"+ret1.area);
??????? var ret2 = new Rectangle(13,12);
??????? alert("測試成功!"+ ret2.width + "|"+ ret2.height);
??? }
1.1以后引入了更好的方法(引入了原型對象的概念相當(dāng)于繼承類):? prototype屬性可以設(shè)置為適當(dāng)?shù)膶ο蟆T黾恿艘栽蛯ο鬄榛A(chǔ)的繼承機(jī)制,具備了面向?qū)ο笳Z言的三個特性(封裝、繼承、多態(tài))所以說javascript也是一種面向?qū)ο蟮恼Z言。只是不同于java和C++等以類為基礎(chǔ)的繼承機(jī)制。
Java中有一條常用的約定,那就是命名類時以大寫字母開頭,命名對象時以小寫字母開頭。JavaScript也可以沿用這一規(guī)則。定義類的時候第一個字母都用大寫的字母,創(chuàng)建類的實(shí)例的時候第一個字母都是小寫。
轉(zhuǎn)載于:https://www.cnblogs.com/liubiqu/archive/2008/03/26/1123759.html
總結(jié)
以上是生活随笔為你收集整理的JavaScript面向对象编程笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “网络爸爸”的密码破解
- 下一篇: 使用SQL DTS功能实现从DB/2向S