<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢(mèng)蝶

    生活、程序、未來(lái)
       :: 首頁(yè) ::  ::  :: 聚合  :: 管理

         摘要: javascript之DOM技術(shù)(一) 一。樣式編程1.頁(yè)面中的每一個(gè)元素都具有一個(gè)style對(duì)象,此對(duì)象管理元素的CSS樣式。這是在IE4.0引入的,后來(lái)作為DOM標(biāo)準(zhǔn)被接受。使用方法:var oDiv=document.getElementById("div1");alert(oDiv.style.backgroundColor);style對(duì)象擁有一個(gè)cssText屬性,返回描...  閱讀全文

    posted @ 2007-02-10 15:12 dennis 閱讀(6366) | 評(píng)論 (0)編輯 收藏

    ??? 今天到china-pub逛了逛,有段時(shí)間沒(méi)在那買(mǎi)書(shū)了,都在當(dāng)當(dāng)網(wǎng)上買(mǎi),那邊滿99元省運(yùn)費(fèi)啊!china-pub上我也是有3個(gè)星星了,琢磨這再買(mǎi)幾本爭(zhēng)取到4個(gè)星星。一直在關(guān)注《programming ruby》的出版,英文版粗略看過(guò)一遍,很想好好搞本中文的讀讀。博文視點(diǎn)跳票N次,真沒(méi)信譽(yù)。逛了一圈,決定買(mǎi)幾本。

    一。《鳥(niǎo)哥的linux私房菜——基礎(chǔ)學(xué)習(xí)篇》
    ??? 玩ubuntu也有段時(shí)間了,沒(méi)有系統(tǒng)學(xué)習(xí)過(guò)linux,靠的都是摸索和同事的指點(diǎn),很有必要系統(tǒng)學(xué)習(xí)linux的使用。這本書(shū)是引進(jìn)臺(tái)灣某鳥(niǎo)哥的(這名字真不錯(cuò))的作品,看書(shū)評(píng)不賴(lài)。
    shupi.gif???

    二.《重構(gòu):改善既有代碼設(shè)計(jì)(中文版)》
    ??? 這本書(shū)早就想讀,在學(xué)校嘗試讀過(guò),看不下去,那時(shí)熱衷于各種各樣的技巧、框架和新鮮玩意,沉不下心來(lái)讀這些磚頭。06年是我對(duì)設(shè)計(jì)模式以及重構(gòu)開(kāi)始深入接觸的一年,興趣也越來(lái)越濃厚,這本書(shū)一定要讀!
    shupi2.gif

    三。《重構(gòu)與模式》
    ??? 第15屆jolt的生產(chǎn)效率大獎(jiǎng)得主,價(jià)值毋庸置疑,繼續(xù)我的模式熱情。

    shupi4.gif

    四。《lucene in Action中文版》

    ??? 買(mǎi)這本書(shū)的原因有二:1.足夠便宜,35塊大洋看看搜索技術(shù),值! 2.我對(duì)搜索確實(shí)感興趣,很好奇,工作中也沒(méi)用過(guò)lucene,作為技術(shù)儲(chǔ)備來(lái)學(xué)習(xí),不賴(lài)!
    ???? 滿大街的webwork in action ,struts in action,spring in action,這樣一本書(shū)顯得很不同,也好像很有趣。
    shupi5.gif????

    五。《征服ruby on rails:web開(kāi)發(fā)技術(shù)詳解》
    ??? 國(guó)內(nèi)比較重量級(jí)的一本原創(chuàng)rails書(shū)籍,兩位作者也是牛人:
    龔昕:現(xiàn)任NEC高級(jí)工程師,有10多年開(kāi)發(fā)經(jīng)驗(yàn),精通跨平臺(tái)開(kāi)發(fā),掌握多種數(shù)據(jù)庫(kù)系統(tǒng),使用Perl/Ruby超過(guò)三年.
    張浩:現(xiàn)任網(wǎng)訊(中國(guó))軟件有限公司項(xiàng)目主管,主要研究Web技術(shù),對(duì)RubyOnRails有獨(dú)特的見(jiàn)解

    看書(shū)評(píng)也是不錯(cuò),值的讀讀。封面和書(shū)名搞的很差勁,比較遺憾。在狗日的《programming ruby》出來(lái)之前解解饞。
    shupi6.gif

    posted @ 2007-02-10 12:52 dennis 閱讀(324) | 評(píng)論 (0)編輯 收藏

    ??? 我得老實(shí)承認(rèn),我很早就想好好學(xué)習(xí)下C#,學(xué)習(xí)下ASP.NET。因?yàn)槲衣?tīng)說(shuō)ASP.NET的開(kāi)發(fā)速度很讓人羨慕,聽(tīng)說(shuō)C#也是蠻有趣的語(yǔ)言。裝了.net Framework2.0,下了C#的語(yǔ)言規(guī)范(本來(lái)想找本書(shū),發(fā)現(xiàn)網(wǎng)上的電子書(shū)都做的很糟糕,還是看語(yǔ)言規(guī)范得了),寫(xiě)第一個(gè)Hello World。

    using?System;

    public?class?HelloWorld
    {
    ????
    public?static?void?Main()
    ????{
    ????????Console.WriteLine(
    "Hello?World");
    ????}

    ????
    }

    ??? 存為hello.cs。配置好環(huán)境變量,在命令行運(yùn)行:csc hello.cs。在目錄下會(huì)生成一個(gè)hello.exe,直接運(yùn)行hello。打印:
    Hello?World

    ??? 看起來(lái)跟java確實(shí)沒(méi)什么不同,除了字母的大小寫(xiě),和java默認(rèn)引入java.lang包,而這里需要using System;
    ??? 稍微復(fù)雜點(diǎn)的例子,我們寫(xiě)一個(gè)庫(kù)文件stack.dll,或者說(shuō)一個(gè)程序集(java中包的概念):
    using?System;

    namespace?Acme.Collections
    {
    ????
    public?class?Stack
    ????{
    ????????Entry?top;
    ????????
    public?void?push(object?data)
    ????????{
    ????????????top?
    =?new?Entry(top,?data);
    ??????????

    ????????}
    ????????
    public?object?pop()
    ????????{
    ????????????
    if?(top?==?null)?throw?new?InvalidOperationException();
    ????????????
    object?result?=?top.data;
    ????????????top?
    =?top.next;
    ????????????
    return?result;

    ????????}
    ????????
    public?Stack()
    ????????{
    ?????

    ????????}
    ????????
    class?Entry
    ????????{
    ????????????
    public?Entry?next;
    ????????????
    public?object?data;
    ????????????
    public?Entry(Entry?next,?object?data)
    ????????????{
    ????????????????
    this.next?=?next;
    ????????????????
    this.data?=?data;
    ????????????}
    ????????}
    ????}
    }

    ??? 代碼很明顯,一個(gè)簡(jiǎn)單的棧結(jié)構(gòu),我們把Stack類(lèi)放在命名空間Acme.Collections中。運(yùn)行:csc /t:library stack.cs,在應(yīng)用目錄下生成一個(gè)stack.dll。我們?cè)趺凑{(diào)用這個(gè)鏈接庫(kù)呢?寫(xiě)個(gè)測(cè)試類(lèi):
    using?System;
    using?Acme.Collections;
    public?class?Test
    {
    ????
    public?static?void?Main()
    ????{
    ????????Stack?stack?
    =?new?Stack();
    ????????stack.push(
    1);
    ????????stack.push(
    10);
    ????????stack.push(
    100);
    ????????????????????
    ????????Console.WriteLine(stack.pop());
    ????????Console.WriteLine(stack.pop());
    ????????Console.WriteLine(stack.pop());
    ????}
    }

    ??? 很明顯,只是把java的import換成了using,而且不需要通配符。編譯test.cs:csc /r:stack.dll test.cs。
    ??? C#和ruby將是我07年主要的學(xué)習(xí)計(jì)劃,另外就是J2EE深入技術(shù)方面的掌握和理解,特別是模式、工作流和Portal方面。


    posted @ 2007-02-09 10:38 dennis 閱讀(717) | 評(píng)論 (0)編輯 收藏

    一.幾個(gè)概念:
    1.我們把一件“事”稱(chēng)為案例(case),有時(shí)又叫做工作(work),職業(yè)(job),產(chǎn)品(Product),服務(wù)(service),項(xiàng)目(item)。案例總處于某個(gè)特定狀態(tài),該狀態(tài)由三個(gè)元素組成:
    (1)案例相關(guān)的屬性
    (2)已經(jīng)滿足的條件
    (3)案例的內(nèi)容
    2.本質(zhì)上case都是離散的,它們有自己獨(dú)立的開(kāi)始和結(jié)束,都能彼此區(qū)分,每一個(gè)case都在一個(gè)過(guò)程中被執(zhí)行。(其實(shí)這里的case就是我們一般工作流中的所謂工作流實(shí)例)

    3.過(guò)程:由許多要被執(zhí)行的task(任務(wù))和一系列決定任務(wù)執(zhí)行次序的條件構(gòu)成。過(guò)程定義了案例的生命周期

    4.任務(wù)(task):是一個(gè)工作的邏輯單元,它能夠作為一個(gè)整體被資源(resource)執(zhí)行。任務(wù)可以被定義為不能再細(xì)分的過(guò)程,即原子過(guò)程,這里存在主觀因素。在定義或者分派任務(wù)的人看來(lái),任務(wù)是原子性的,但是對(duì)于執(zhí)行它的人來(lái)說(shuō)經(jīng)常是非原子性。
    5.資源(resource):是指能夠執(zhí)行特定任務(wù)的一個(gè)人、一臺(tái)機(jī)器或一群人。
    6.過(guò)程結(jié)構(gòu)的四種基本機(jī)制,或者說(shuō)案例的生命周期(稱(chēng)為路由):順序(sequence),選擇(selection),并行,循環(huán)。
    7.活動(dòng)(Activity):任務(wù)的具體執(zhí)行(由資源所執(zhí)行)稱(chēng)為活動(dòng)。
    8.過(guò)程的分類(lèi):
    基本過(guò)程:企業(yè)中那些生產(chǎn)產(chǎn)品或者服務(wù)的過(guò)程,也稱(chēng)作生產(chǎn)過(guò)程。
    二級(jí)過(guò)程:支持基本過(guò)程的過(guò)程,因此也被稱(chēng)為支持過(guò)程,比如財(cái)務(wù)管理、人力管理等。
    三級(jí)過(guò)程:指導(dǎo)與協(xié)調(diào)基本和二級(jí)過(guò)程的管理過(guò)程。

    9.工作流的啟動(dòng)(觸發(fā))有3類(lèi):
    (1)資源驅(qū)動(dòng)(人工,自動(dòng),半自動(dòng))
    (2)外部事件,一個(gè)JMS消息?
    (3)時(shí)間信號(hào)(定時(shí)事件)

    二.組織結(jié)構(gòu)
    1.組織結(jié)構(gòu)確立了如何把組織所需要完成的工作分配給員工,最重要的三種組織形式:
    (1)層次結(jié)構(gòu),常見(jiàn)的、通過(guò)樹(shù)結(jié)構(gòu)來(lái)描述的組織圖
    (2)矩陣結(jié)構(gòu),在以項(xiàng)目為中心的公司中較為常見(jiàn),比如軟件公司,一個(gè)員工同時(shí)屬于電信事業(yè)部和XXX現(xiàn)場(chǎng)項(xiàng)目組
    (3)網(wǎng)狀結(jié)構(gòu)
    2.有關(guān)工作流權(quán)限系統(tǒng)的設(shè)計(jì),更多請(qǐng)見(jiàn)銀狐999的文檔《工作流系統(tǒng)組織模型應(yīng)用和解決方案

    三.過(guò)程管理
    1.區(qū)分管理系統(tǒng)與被管理系統(tǒng),管理系統(tǒng)將目標(biāo)、前提和決策傳達(dá)給被管理系統(tǒng),被管理系統(tǒng)可以向管理系統(tǒng)回報(bào),根據(jù)匯報(bào),管理系統(tǒng)可以修正這些目標(biāo)。
    2.過(guò)程管理分為四個(gè)層次:
    (1)Real-time,實(shí)時(shí)管理
    (2)Operational 操作管理
    (3)戰(zhàn)術(shù)管理
    (4)戰(zhàn)略管理
    從上往下影響的范圍越廣,持續(xù)時(shí)間越長(zhǎng)。
    3.業(yè)務(wù)過(guò)程信息系統(tǒng)的發(fā)展,歷史表明,越來(lái)越多的通用任務(wù)已被從程序中分離出來(lái)并且放入分解的管理系統(tǒng)中:
    (1)1965-1975年:分解應(yīng)用。信息系統(tǒng)由分解的應(yīng)用組成,每個(gè)應(yīng)用都有自己的數(shù)據(jù)庫(kù)和定義。
    (2)1975-1985年:數(shù)據(jù)庫(kù)管理——將數(shù)據(jù)管理從應(yīng)用程序中抽離出來(lái),不同的程序共享一個(gè)數(shù)據(jù)庫(kù),面向數(shù)據(jù)的開(kāi)發(fā)方法產(chǎn)生
    (3)1985-1995年:用戶界面管理——將用戶界面從應(yīng)用程序中抽取出來(lái)。
    (4)1995-2005:工作流管理——將業(yè)務(wù)過(guò)程從應(yīng)用程序中抽取出來(lái)。工作流系統(tǒng)負(fù)責(zé)管理工作流并組織案例數(shù)據(jù)在不同的人員以及應(yīng)用程序間進(jìn)行流轉(zhuǎn)。


    posted @ 2007-02-08 19:13 dennis 閱讀(2027) | 評(píng)論 (1)編輯 收藏

    前天在CSDN上看到一個(gè)帖子很有感觸:昨天我昏倒在家里。做這行,真有點(diǎn)用健康和青春賣(mài)命的味道。最近有點(diǎn)累,說(shuō)不清為什么,一直在讀工作流方面的資料,也總算搞清楚了osworkflow的運(yùn)行原理。想動(dòng)手寫(xiě)一個(gè)osworkflow的demo,剛開(kāi)始一半,就提不起興趣搞下去。沒(méi)點(diǎn)壓力,人也懶了。想回家過(guò)年了!-_-

    posted @ 2007-02-07 14:38 dennis 閱讀(285) | 評(píng)論 (0)編輯 收藏

    項(xiàng)目要初驗(yàn),完善文檔基本沒(méi)我什么事,正好有時(shí)間把blog搬家!-_-
    第一次寫(xiě)blog在CSDN(killme2008),那時(shí)CSDN的blog系統(tǒng)剛出來(lái),速度很驚人——慢的驚人,而且3天兩頭當(dāng)機(jī)的玩意。不是我玩blog,是blog玩我。忍受了接近一年的時(shí)間,把家搬到了sohu(花非花)。在那也呆了4,5個(gè)月了吧,可畢竟不是技術(shù)blog圈,八卦新聞一大堆,而且似乎大伙都喜歡在blog上貼圖,寫(xiě)上那么一段風(fēng)花雪月的文字然后滿世界打廣告叫別人去看!-_-? 我說(shuō)你丫是寫(xiě)blog還是想出名啊!
    blog對(duì)我的意義僅在于網(wǎng)上有個(gè)寫(xiě)東西的地方,寫(xiě)下自己每天的得失,寫(xiě)下某一件快樂(lè)的事情,寫(xiě)下幾行也許以后用得著又怕忘記的代碼......

    搬家夠累,懶的一篇一篇復(fù)制黏貼了,轉(zhuǎn)了20篇就沒(méi)興趣了,就這樣吧,開(kāi)始俺的blogjava生涯,等下順便把域名映射到這來(lái),嘿嘿

    posted @ 2007-02-06 14:27 dennis 閱讀(278) | 評(píng)論 (0)編輯 收藏

    ?1.Global對(duì)象。這對(duì)象之所以特別就是因?yàn)樗静淮嬖?-_-。如果你聲明
    var pointer=Global;
    報(bào)錯(cuò),找不到此對(duì)象。這是因?yàn)樵贓CMAScript中,每個(gè)函數(shù)都某個(gè)對(duì)象的方法,我們用到的isNaN(),isFinite(),parseInt()和parseFloat()函數(shù),看起來(lái)是獨(dú)立的函數(shù),其實(shí)它們都是Global對(duì)象的函數(shù)。
    需要注意兩個(gè)用于處理url編碼的函數(shù):

    1)encodeURI()和decodeURI()? 處理完整的uri
    2)encodeURIComponent()和decodeURIComponent() ??? 處理片段

    2.其他對(duì)象如Array,Math,Date對(duì)象,我發(fā)現(xiàn)比較有趣的是Array的處理方式與ruby中Array的處理方式幾乎一樣。

    3.ECMAScript對(duì)象的創(chuàng)建方式:
    1)工廠方式:

    function?showColor(){
    ??alert(
    this.color)
    }

    function?createCar(sColor,?iDoors,?iMpg)?{
    ????
    var?oTempCar?=?new?Object;
    ????oTempCar.color?
    =?sColor;
    ????oTempCar.doors?
    =?iDoors;
    ????oTempCar.mpg?
    =?iMpg;
    ????oTempCar.showColor?
    =showColor;
    ????
    return?oTempCar;
    }


    var?oCar1?=?createCar("red",?4,?23);
    var?oCar2?=?createCar("blue",?3,?25);

    這樣的方式看起來(lái)很奇怪,好象方法showColor()不是對(duì)象的方法

    2)構(gòu)造函數(shù)方式:

    function?Car(sColor,?iDoors,?iMpg)?{
    ????
    this.color?=?sColor;
    ????
    this.doors?=?iDoors;
    ????
    this.mpg?=?iMpg;
    ????
    this.showColor?=?function?()?{
    ????????alert(
    this.color)
    ????}
    ;
    }


    var?oCar1?=?new?Car("red",?4,?23);
    var?oCar2?=?new?Car("blue",?3,?25);


    這樣的方式有個(gè)新問(wèn)題,那就是每次構(gòu)造一個(gè)對(duì)象都將重復(fù)生成函數(shù)showColor,為每個(gè)對(duì)象創(chuàng)建獨(dú)立的函數(shù)版本。

    3)原型方式

    function?Car()?{
    }


    Car.prototype.color?
    =?"red";
    Car.prototype.doors?
    =?4;
    Car.prototype.mpg?
    =?23;
    Car.prototype.drivers?
    =?new?Array("Mike",?"Sue");
    Car.prototype.showColor?
    =?function?()?{
    ????alert(
    this.color);
    }
    ;

    var?oCar1?=?new?Car();
    var?oCar2?=?new?Car();

    oCar1.drivers.push(
    "Matt");

    alert(oCar1.drivers);????
    //outputs?"Mike,Sue,Matt"
    alert(oCar2.drivers);????//outputs?"Mike,Sue,Matt"


    利用對(duì)象的prototype屬性來(lái)構(gòu)造對(duì)象,但是有兩個(gè)問(wèn)題:沒(méi)辦法使用構(gòu)造函數(shù)傳參來(lái)生成對(duì)象;函數(shù)雖然被不同對(duì)象共享,但是屬性竟然也被共享,比如上面代碼中,oCar1的drivers屬性與oCar2的drivers屬性是同一個(gè)Array對(duì)象。

    4)為了解決上面問(wèn)題,我們引入了構(gòu)造函數(shù)/原型的混合方式:
    function?Car(sColor,?iDoors,?iMpg)?{
    ????
    this.color?=?sColor;
    ????
    this.doors?=?iDoors;
    ????
    this.mpg?=?iMpg;
    ????
    this.drivers?=?new?Array("Mike",?"Sue");
    }


    Car.prototype.showColor?
    =?function?()?{
    ????alert(
    this.color);
    }
    ;

    var?oCar1?=?new?Car("red",?4,?23);
    var?oCar2?=?new?Car("blue",?3,?25);

    oCar1.drivers.push(
    "Matt");

    alert(oCar1.drivers);????
    //outputs?"Mike,Sue,Matt"
    alert(oCar2.drivers);????//outputs?"Mike,Sue"


    屬性通過(guò)構(gòu)造函數(shù)方式,而函數(shù)則通過(guò)原型來(lái)生成,這就避免了純粹原型方式帶來(lái)的問(wèn)題。但是函數(shù)放在對(duì)象的構(gòu)造函數(shù)定義,讓習(xí)慣java,c++的人也感覺(jué)不爽,對(duì)象為什么不能放在一塊地方定義呢?這就引出來(lái)了動(dòng)態(tài)原型方式

    5)動(dòng)態(tài)原型方式:
    function?Car(sColor,?iDoors,?iMpg)?{
    ????
    this.color?=?sColor;
    ????
    this.doors?=?iDoors;
    ????
    this.mpg?=?iMpg;
    ????
    this.drivers?=?new?Array("Mike",?"Sue");

    ????
    if?(typeof?Car._initialized?==?"undefined")?{

    ????????Car.prototype.showColor?
    =?function?()?{
    ????????????alert(
    this.color);
    ????????}
    ;

    ????????Car._initialized?
    =?true;
    ????}

    }



    var?oCar1?=?new?Car("red",?4,?23);
    var?oCar2?=?new?Car("blue",?3,?25);

    通過(guò)引入_initialized 屬性,當(dāng)?shù)谝淮螛?gòu)造對(duì)象時(shí)生成方法showColor ,再次生成對(duì)象時(shí),此時(shí)的_initialized 已經(jīng)是true,就避免了重復(fù)生成函數(shù),屬性的定義和函數(shù)的定義都在構(gòu)造函數(shù)內(nèi),也滿足了語(yǔ)義上的對(duì)象封裝概念。

    我們應(yīng)當(dāng)盡量采用 構(gòu)造函數(shù)/原型混合方式 動(dòng)態(tài)原型方式 來(lái)創(chuàng)建ECMAScript對(duì)象。

    posted @ 2007-02-06 14:05 dennis 閱讀(562) | 評(píng)論 (0)編輯 收藏

    ?開(kāi)始讀《JAVASCRIPT高級(jí)程序設(shè)計(jì)》
    第2章 ECMAScript基礎(chǔ)

    JavaScript實(shí)質(zhì)上是ECMAScript在web環(huán)境中的實(shí)現(xiàn),還有其他實(shí)現(xiàn)(如Flash的ActionScript等)。因此了解基本的ECMAScript相當(dāng)于掌握javascript的基礎(chǔ)。

    1。ECMAScript的基礎(chǔ)概念:
    1)區(qū)分大小寫(xiě)
    2)變量是弱類(lèi)型(解釋型語(yǔ)言的基本特點(diǎn))
    3)每行結(jié)尾的分號(hào)可有可無(wú)(與java不同)
    4)注釋的形式與java相同(單行或者塊注釋?zhuān)?br />5)大括號(hào)代表代碼塊{}

    2。變量,使用var定義。如var test="test1"
    當(dāng)然,變量是弱類(lèi)型,并且可以不被初始化而定義
    var test="test1"
    var test2;
    test=1;
    建議采用匈牙利類(lèi)型標(biāo)記法來(lái)命名變量。

    3.關(guān)鍵字和保留字(略)

    4。原始值和引用值
    與java類(lèi)似,變量分成原始類(lèi)型與引用類(lèi)型兩類(lèi):
    1)原始值存儲(chǔ)在stack中
    2)引用值是存儲(chǔ)在heap中的對(duì)象,存儲(chǔ)在變量處的是一個(gè)point

    5。原始類(lèi)型:
    1)ECMAScript有5種原始類(lèi)型:Undefined、Null、Boolean、Number和String。可以使用typeof來(lái)判斷一個(gè)值是否在某類(lèi)型的范圍內(nèi)。如:
    var?s="test";
    alert(
    typeof?s)??//輸出"string"

    注意:type null返回object,因?yàn)閚ull被認(rèn)為是對(duì)象的占位符。

    2)Undefined類(lèi)型
    當(dāng)變量未初始化時(shí),該變量的默認(rèn)值就是undefined。但是,undefined并不同于未定義的值。但是,typeof并不區(qū)分兩者,比如:
    var?temp1;
    alert(
    typeof?temp1);??//未初始化,輸出undefined
    alert(typeof?temp2);???//未定義,也是undefined


    函數(shù)無(wú)返回值,返回的也是undefined

    3)Null類(lèi)型
    Null只有一個(gè)值,也就是null。Undefined本質(zhì)上是從Null派生來(lái)的,因此兩者相等:
    alert(null==undefined);? //輸出true
    但兩者意義不同,Undefined表示變量未被初始化之前的值,而Null則表示尚未存在的對(duì)象,也就是對(duì)象的占位符。

    4)Boolean類(lèi)型
    Boolean有兩個(gè)值:true,false

    5)Number類(lèi)型
    Number類(lèi)型很有趣,Number可以表示32位的數(shù)字,也可以表示64位的浮點(diǎn)數(shù),以0開(kāi)頭的數(shù)字當(dāng)成八進(jìn)制,以ox開(kāi)頭即為十六進(jìn)制。有趣的地方在于所有數(shù)字運(yùn)算結(jié)果都是返回十進(jìn)制!
    在ECMAScript中,浮點(diǎn)數(shù)的計(jì)算本質(zhì)上是存儲(chǔ)的是字符串。
    Number類(lèi)型的大小在Number.MAX_VALUE和Number.MIN_VALUE之間
    無(wú)窮大用Infinity表示,如你所見(jiàn),Number.MAX_VALUE就是Infinity,而Number.MIN_VALUE就是-Infinity,可以通過(guò)isFinite(n)來(lái)判斷n是否超過(guò)界限

    最后,還有一個(gè)特殊值是NaN,表示Not a Number(非數(shù)),非數(shù)產(chǎn)生在類(lèi)型轉(zhuǎn)換失敗時(shí),注意,它與自身不相當(dāng):alert(NaN==NaN);? //輸出false

    不推薦使用NaN,我們可以通過(guò)isNaN()來(lái)判斷是否是非數(shù)(很常用咯)

    6) String類(lèi)型
    String是唯一沒(méi)有固定大小的原始類(lèi)型,可以存儲(chǔ)0或者多個(gè)Unicode字符。與java不同的是,可以使用雙引好和單引號(hào)來(lái)聲明字符:
    var s1="test1";
    var s2='test2';
    常見(jiàn)轉(zhuǎn)義符與其他語(yǔ)言相同。

    6。類(lèi)型轉(zhuǎn)換
    1)轉(zhuǎn)換成字符串:
    Boolean,String和Number類(lèi)型本質(zhì)上都是偽對(duì)象,他們都有toString()方法(與java相同)

    Number類(lèi)型的toString()有兩種模式:
    toString(),返回?cái)?shù)字的十進(jìn)制
    toString(n),返回n進(jìn)制的字符串(n為2,8,10,16)

    2)轉(zhuǎn)換成數(shù)字:
    兩個(gè)方法:parseInt()和parseFloat()方法。用法略過(guò),需要注意的是parseInt如果沒(méi)指定基數(shù),會(huì)把以0開(kāi)始的解析為8進(jìn)制。parseFloat反而不會(huì)。

    3)強(qiáng)制類(lèi)型轉(zhuǎn)換:
    3種強(qiáng)制類(lèi)型轉(zhuǎn)換:
    String(value);
    Boolean(value);
    Number(value);
    規(guī)則如下:
    (1)String(value)與toString()基本一樣,除了對(duì)null或者undefined的轉(zhuǎn)換之外,如:
    var s1=String(null); //通過(guò)
    var oNull=null;
    var s2=oNull.toString(); //報(bào)錯(cuò)

    (2)Boolean(value),如果該value是空字符串、數(shù)字0、undefined或者null,返回false,其他返回true

    (3)Number()與parseInt和parseFloat基本相同,不同的是Number()將轉(zhuǎn)換整體,如果轉(zhuǎn)換失敗返回NaN。如:
    Number(false)??;//??0
    Number(true);??//???1
    Number(new?Object());???//??NaN
    Number('5.6.7');????//??NaN


    7。引用類(lèi)型:
    1)Object類(lèi):類(lèi)似于java中java.lang.Object的地位和作用,js中所有類(lèi)都繼承此類(lèi)而來(lái)。它包含下面的屬性:
    (1)Constructor——對(duì)創(chuàng)建該對(duì)象函數(shù)的引用
    (2)Prototype——對(duì)該對(duì)象對(duì)象原型的引用,對(duì)所有的類(lèi),它將返回一個(gè)Object實(shí)例
    (3)HasOwnProperty(property)——判斷是否有某個(gè)屬性
    (4)IsPropertOf(object)——判斷該對(duì)象是否為另一個(gè)對(duì)象的原型
    (5)PropertyIsEnumerable(property)——判斷對(duì)象的屬性是否可以枚舉
    (6)ToString()——返回對(duì)象的原始字符串表示
    (7)ValueOf()——返回最適合該對(duì)象的原始值,對(duì)于許多類(lèi),它的結(jié)果與ToString()相同

    2)Boolean類(lèi),盡量避免使用,注意的是,在Boolean表達(dá)式中,所有的值將被自動(dòng)轉(zhuǎn)化為true,所以下面的輸出:
    var oFalseObject=new Boolean(false);
    alert(oFalseObject&&true);? //輸出true,而不是false

    3) Number類(lèi),是Number原始類(lèi)型的引用類(lèi)型,應(yīng)該少使用此類(lèi),盡量使用原始類(lèi)型。需要注意3個(gè)方法:
    (1)toFixed():返回具有指定位數(shù)小數(shù)的字符串,如:
    var oNumberObject=new Number(99);
    alert(oNumberObject.toFixed(2));? // 輸出99.00

    ?(2) toExponential(),返回用科學(xué)記數(shù)法表示的數(shù)字的字符串形式,如:
    var oNumberObject=new Number(99);
    alert(oNumberObject.toExponential(1));? //輸出9.9e+1

    (3)toPrecision(),對(duì)數(shù)進(jìn)行舍入,返回盡可能接近真實(shí)值的數(shù)字,如:
    var oNumberObject=new Number(99);
    alert(oNumberObject.toPrecision(3));? //輸出99.0
    注意,這3個(gè)方法都將進(jìn)行四舍五入操作

    4)String類(lèi),是String原始類(lèi)型的對(duì)象,常見(jiàn)方法見(jiàn)下面的例子:

    var?oStringObject=new?String("hello?world");
    alert(oStringObject.length);??
    //輸出11
    alert(oStringObject.toString()==oStringObject.valueOf());??//輸出true
    alert(oStringObject.charAt(1));???//輸出e
    alert(oStringObject.charCodeAt(1));?//輸出e的字符代碼:101
    alert(oStringObject.concat(",china"));???//輸出hello?world,china
    alert(oStringObject.indexOf("e"));???//輸出1
    alert(oStringObject.lastIndexOf("o"));??//輸出7

    var?oStringObject1=new?String("yellow");
    var?oStringObject2=new?String("brick");
    var?iResult=oStringObject1.localeCompare(oStringObject2);??//根據(jù)本地比較
    if(iResult>0){
    ??alert(
    "oStringObject1在oStringObject2后面");
    }
    else?if(iResult<0){
    ???alert(
    "oStringObject1在oStringObject2前面");
    }
    else
    ???alert(
    "oStringObject1和oStringObject2相同");
    alert(oStringObject.substring(
    3,7));??//輸出"lo?w"
    alert(oStringObject.slice(3,7));??//輸出"lo?w"
    alert(oStringObject.toUpperCase());
    alert(oStringObject.toLowerCase());
    alert(
    "中國(guó)".toLocaleLowerCase());


    8.操作符和語(yǔ)句,省略大部分操作符的介紹和控制語(yǔ)句,與其他語(yǔ)言(java,ruby)基本相同,需要注意的摘抄如下:
    1)delete操作符:用于刪除對(duì)以前定義的對(duì)象屬性或者方法的引用,如:
    var?o=new?Object();
    o.name
    ="dennis";
    alert(o.name);?
    //輸出dennis
    delete?o.name;???//解除引用
    alert(o.name);??//輸出undifined


    2)for ... in語(yǔ)句,嚴(yán)格的枚舉語(yǔ)句,用于枚舉對(duì)象屬性

    3)switch可以作用于字符串,而不僅僅是整數(shù)

    4)不支持重載(與ruby相同),可以通過(guò)arguments對(duì)象來(lái)變相實(shí)現(xiàn)

    5)在ECMAScript中,函數(shù)其實(shí)是完整一個(gè)對(duì)象(與ruby相同,或者說(shuō)動(dòng)態(tài)語(yǔ)言的基本特點(diǎn)),可以采用:
    var function_name=new Function(arg1,arg2,arg3,...,function_body);
    來(lái)定義函數(shù)(速度比普通方法慢)。函數(shù)可以作為參數(shù)傳遞,函數(shù)的length屬性返回此函數(shù)的參數(shù)個(gè)數(shù)
    6)ECMAScript的閉包概念與其他動(dòng)態(tài)語(yǔ)言的概念很不同,我還不大理解,過(guò)段時(shí)間好好研究一下。(寫(xiě)入備忘錄)

    posted @ 2007-02-06 14:03 dennis 閱讀(438) | 評(píng)論 (0)編輯 收藏

         摘要: 最近一直在讀《javascript高級(jí)程序設(shè)計(jì)》,也快讀完了,讀到事件這一章,書(shū)中提供的一個(gè)事件工具類(lèi)很實(shí)用,我注釋了一下,并摘記://eventutil.jsvar?EventUtil?=?new?Object;/**//*???此方法用來(lái)給特定對(duì)象添加事件,oTarget是指定對(duì)象,sEventType是事件類(lèi)型,如click、keydown等,????fnHandler是事件回調(diào)函數(shù)/*Ev...  閱讀全文

    posted @ 2007-02-06 13:58 dennis 閱讀(3075) | 評(píng)論 (1)編輯 收藏

    FCKEditor是一個(gè)開(kāi)源的,功能強(qiáng)大的富文本編輯器,在官方主頁(yè)上有提供ASP,JSP,ASP.NET,PHP等版本,目前還沒(méi)有rails的版本(可以設(shè)置,主要是要自己實(shí)現(xiàn)上傳等功能),不過(guò)有一個(gè)plugin來(lái)實(shí)現(xiàn)此功能,有上傳文件、拼寫(xiě)檢查的功能。

    1。首先到http://rubyforge.org/frs/?group_id=2038,下載0.3版本,解壓縮后重命名文件夾為fckeditor,并放到你的應(yīng)用的/vender/plugins下面,文件結(jié)構(gòu)類(lèi)似:

    --rblog

    ????--vender

    ??????--plugins

    ????????? --fckeditor

    ?????????????? --app

    ?????????????? --lib

    ?????????????? --public

    ?????????????? ...

    2。然后在應(yīng)用根目錄下執(zhí)行命令:rake fckeditor:install進(jìn)行安裝和設(shè)定。安裝完成后就可以使用了,默認(rèn)會(huì)在public下面新建一個(gè)uploads目錄用來(lái)存放上傳的文件。

    3。使用方法:項(xiàng)目自帶的readme寫(xiě)錯(cuò)的,下面是正確的做法。你首先要在頁(yè)面引入js文件(當(dāng)然也可以在layout中引入)

    ???????????? <%= javascript_include_tag :fckeditor %>

    (1)非AJAX方式:非常簡(jiǎn)單,首先你需要從你的action傳來(lái)一個(gè)對(duì)象,如果沒(méi)有你就會(huì)一直收到一個(gè)nil錯(cuò)誤。假設(shè)為@artical=Artical.new,artical有一個(gè)content字段用來(lái)存儲(chǔ)文章內(nèi)容

    然后在頁(yè)面調(diào)用:

    <%= fckeditor_textarea("artical", "content", :toolbarSet => 'Simple', :width => '100%', :height => '200px' )%>

    如此一來(lái),@artical.content將顯示在fckeditor的編輯框內(nèi),我們這里為空

    (2)AJAX方式調(diào)用:

    <%= form_remote_tag :url => @options.merge(:controller => @scaffold_controller),
    ??????????????????? :before => fckeditor_before_js('note', 'text') %>

    ??? <%= fckeditor_textarea( "artical", "content", :ajax => true ) %>

    <%= end_form_tag %>

    posted @ 2007-02-06 13:41 dennis 閱讀(251) | 評(píng)論 (0)編輯 收藏

    僅列出標(biāo)題
    共56頁(yè): First 上一頁(yè) 48 49 50 51 52 53 54 55 56 下一頁(yè) 
    主站蜘蛛池模板: 色五月五月丁香亚洲综合网| 久久久久久久久亚洲| 国产又大又粗又硬又长免费| 中国在线观看免费高清完整版| 日韩欧毛片免费视频| 免费AA片少妇人AA片直播| 国产免费看JIZZ视频| 黄页免费的网站勿入免费直接进入| 91网站免费观看| 999在线视频精品免费播放观看| 免费看污成人午夜网站| 一个人在线观看视频免费| 日韩精品福利片午夜免费观着| 午夜性色一区二区三区免费不卡视频 | 免费国产在线观看老王影院| 免费国产怡红院在线观看| 亚洲国产午夜福利在线播放| 美腿丝袜亚洲综合| 亚洲AV无码一区二区二三区软件 | 在线播放高清国语自产拍免费 | 午夜老司机永久免费看片| 三年片在线观看免费大全电影 | 最近免费中文在线视频| 毛色毛片免费观看| 国产成人精品免费视频大全五级| 免费国产a国产片高清网站| 国产av无码专区亚洲国产精品| 亚洲色婷婷综合久久| 91亚洲一区二区在线观看不卡| 国产精品亚洲综合五月天| 亚洲av成人片在线观看| caoporn成人免费公开| 99视频在线免费看| 精品久久久久国产免费| 又大又粗又爽a级毛片免费看| 狠狠色婷婷狠狠狠亚洲综合| 久久青青成人亚洲精品| wwwxxx亚洲| 人人鲁免费播放视频人人香蕉| 小日子的在线观看免费| 日韩一区二区a片免费观看|