javascript學習筆記[7]–內建對象

來源:互聯網
上載者:User

        昨天晚上回了趟鄉下,所以沒時間寫部落格了,那今天繼續吧,今天主要是學習了ECMAScript 5增強物件模型,   以及一些javascript的內建對象,現在總結一下。先說明一下哦,我也是一隻菜鳥啦,剛學沒多久,大家一起探討探討,如果部落格寫的有問題的話,歡迎及時幫我指出。

      7.1 ECMAScript 5 增強物件模型

             看完了,我不知道有些什麼用,感覺講的東西都是好理論的東西,實際應用的應該比較少吧。就拎一下重點:

            ECMAScript 5 增強了對物件模型的控制力度,通過新的物件模型,使用者可以控制單獨的屬性是否允許讀取,寫入,刪除和枚舉等,甚至可以控制對象是否允許添加或刪除屬性,這樣就可以實現密封對象的功能。--------太文藝了,我這樣的菜鳥目前肯定是用不到這麼先進的東西的。

          使用Object.defineProperty()定義屬性,在定義屬性時可以改變描述符的索引值。文法如下:

          Object.defineProperty(obj,prop,desc);

          obj:對象,該參數指定為該類的原型對象

          prop:字串,用於指定屬性名稱

          desc:包含屬性的描述

function Person(){}Object.defineProperty(Person.prototype,                                    "name",                                    {                                     value:"tony",                                      //這些屬性定義描述預設都是true                                     writeable:true,                                      enumerable:true,                                      configurable:true  });//下面代碼就可以得到屬性值tonyvar person = new Person();document.write(person.name);

 

         接下來可以一次定義多個屬性,用Object.defineProperties()方法。Object.defineProperties(obj,props)

         接下來介紹幾個枚舉屬性,也就是略微提一下,有個印象,到時候要用的話現場查一下就行了。

         Object.keys(obj),擷取屬性名稱,也就是上面代碼的name。

         Object.getOwnPropertyNames(obj),列出所有能枚舉和不能枚舉的屬性,該方法不能實現向前相容。

         密封對象和動態對象,密封對象只能擁有在執行個體化時從類定義擷取的固定的一組屬性和方法,不能在運行時添加其他屬性和方法,預設情況下,javascript建立的對象都是動態對象,即允許在運行時為對象添加其他屬性和方法。具體怎麼實現就不說了。反正這種方法要求比較高,都需要在use strict(執行strict 模式)下才能看到,而目前只有firefox4支援。相容性不行啦。

          7.2 String類

          還是介紹一些實際編程中經常用到的東西來的實在。

          7.2.1 Regex文法

                 相信大家肯定看到過各種Regex,尤其是在驗證的時候,但是總是不知道它具體什麼意思,那這裡就稍微普及一下。

                 javascript使用RegExp類來表示Regex,下面有三種建立方法以及一段最簡單的符合代碼:

View Code

var re = /ab+c/             // (使用兩個//包圍,並且不帶引號)var re = new RegExp("ab+c") // 建立RegExp對象var re = new RegExp(new RegExp("ab+c"));// 使用一個RegExp對象建立另一個RegExp對象var re = new RegExp(/ab+c/);// 就是上面那一種方法下面的代碼錶示在一段字串中匹配連續字串abcvar pattern = "abc";var re = new RegExp(pattern);var oString = "abcefg";document.write(re.exec(oString));   //匹配成功返回abc;失敗則返回null

 

                Regex文法就不說了,在javascript中,使用RegExp類的exec()和test()方法進行Regex匹配。exec在上面的代碼中有體現了,test()就是尋找字串中是否存在一個匹配指定模式的字串,如果存在,則返回true,否則,返回false。下面我貼出幾篇文章索引:

精通 JavaScript中的Regex

javascriptRegex

經典 Javascript Regex

             7.2.2  String:字串文字("tony")和String對象(new String("abc"))都可以調用String類的所有成員,但是這兩者是有區別的,javascript解釋引擎會自動將其轉換成臨時String對象,調用其方法,最後會清除臨時對象。除非確實需要使用String對象(因為String對象可以有反常規的行為),否則建議使用字串文字。String的方法參見這篇博文:JavaScript_String函數下面看一段挺有意思的代碼----建立打字機效果:

View Code

<!DOCTYPE HTML><html><head><meta charset="utf-8"><title>Sample</title></head><body><div id = "test" style="width:200px;height:100px;border:2px;#ccc dashed; padding:10px"></div><script>    //實際上是不斷地在更新顯示的文字,每次都多一個字,看起來就好像印表機一樣的效果了。var typingTest = "放一段文字進去,讓它像打字機一樣一個字一個字的打出來,顯示出來";var count = 0;var oBlock = document.getElementById("test");function type(){ if(count <= typingTest.length){     oBlock.innerHTML = typingTest.substring(0,count);  //count每次都增加一個     count++; }else{    window.clearInterval(intervalID); }}var intervalID = window.setInterval(type,200);         //每200毫秒調用一次該函數</script></body></html>

 

              還有用於建立Html格式字串的方法,下面看段代碼。

View Code

var myString = "查看第一部分內容";document.writeln(myString.anchor("section1"));//這將建立下面的命名錨點<a name="section1">查看第一部分內容</a>var mySite = "我的BOLG";var mySiteURL = "http://www.cnblogs.com/tonylp/";document.write("歡迎訪問"+mySite.link(mySiteURL));//這將建立下面的超連結歡迎訪問<a href="http://www.cnblogs.com/tonylp/">我的BOLG</a>

 

           7.3 數組,多維陣列和複合數組(雜湊映射)     

                   Array(數組)是javascript中較為複雜的資料類型,同時Array也是內建的一個核心類,一個數組就是Array類的一個執行個體,可以使用Array類的方法和屬性運算元組,javascript數組中的各元素不必為相同的資料類型,可以混合。

                 Array類的構造方法有3種重載形式:new Array();new Array(length);new Array(ele1,ele2,ele3);

                 還有一些Array API處理數組javascript的數組API,還有一些ECMAScript新增方法的使用,複合數組,複製數組,雜湊表的東西沒說,以後再說了吧,今天實在沒狀態,頂了個鼻涕,難受死了。

          7.4 使用Date類處理日期和時間

                     Date類用來擷取運行javascript程式的作業系統的日期和時間值。常用的記住如下代碼就可以了,一些更加細節的方法百度一下就可以了。

                     

View Code

var myDate = new Date();  // 擷取時間 Fri Feb 01 2013 16:01:15 GMT+0800 (中國標準時間) var myYear = myDate.getFullYear();    //擷取四位元年份2013var myMonth = myDate.getMonth()+1;   //從0開始,所以需要加1 ,輸出2var myDay = myDate.getDate();        //返回Date對象的日期數,getDay返回星期數。輸出1

 

            然後麼,自己重組一下日期格式就可以20130201,以這樣的形式傳回後台,傳回資料庫。

          7.5 其他javascript內建類(核心對象)-Boolean,Number,Math,Function和Arguments類等 

                  Boolean,Number都沒什麼好講的啦,Math也就一些方法,就比方三角餘弦,正弦,絕對值,計算平方根,計算自然對數,老實說,javascript的數文書處理能力挺弱的,就知道一下就行了。

                   Function類有call(),apply()和bind()方法,call()方法一般都用"()"代替了。

                   Arguments類和arguments屬性,Arguments類用來儲存和訪問函數的參數,它位於函數體內部,可以使用Function類的arguments屬性對其進行訪問。以前的代碼有用到過arguments,挺好用的,arguments.length判斷長度,arguments[n]擷取參數

                   今天就寫這麼多吧,這幾天有點事,部落格更新就不定期了,預計接下來就開始bom和dom篇了。

                   以上全部都屬個人原創,請大家轉載的時候附上原創連結: http://www.cnblogs.com/tonylp

 

 

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.