應(yīng)用,一定要應(yīng)用

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            25 Posts :: 0 Stories :: 118 Comments :: 0 Trackbacks

          2006年12月28日 #

          Sybase Powerdesigner具有強(qiáng)大的模板和腳本功能,可以自定義和擴(kuò)展生成數(shù)據(jù)庫時(shí)的DDL。
          在主界面菜單中選擇Tools-->Resources-->DBMS.
          再彈出的菜單中選擇需要擴(kuò)展的數(shù)據(jù)庫類型。
          點(diǎn)擊左上角Property圖標(biāo),彈出模板設(shè)置窗口。
          在窗口中設(shè)置相應(yīng)的Sql生成模板。
          posted @ 2008-06-21 11:22 flyffa 閱讀(931) | 評論 (0)編輯 收藏

          1.1. 繼承

          今天遇到了需要在 javascript 中繼承的問題:

          查了一些帖子,自己又寫了幾個(gè)例子測試了一下,總結(jié)如下:

          1.1.1. ??? 三種方法

          js 中實(shí)現(xiàn)繼承有三種方法:

          假設(shè)父類為 Parent, 子類為 Child,

          ?

          第一種,子類強(qiáng)制調(diào)用父類構(gòu)造

          function Child(){

          ?????? Parent.call(this);

          }

          ?

          第二種,子類間接調(diào)用父類構(gòu)造

          function Child(){

          ?????? this.base = Parent;

          ?????? this.base();

          }

          ?

          第三種:設(shè)置原型

          function Child(){}

          Child.prototype = new Parent();

          這種方式雖然不夠直觀,卻應(yīng)該是最有效率的方式。

          ?

          1.1.2. ??? 總結(jié):

          其實(shí) js 本身是沒有什么繼承之類的概念的,只是為了使用利用 js 的一些特性而加的。

          ?

          js 的原型方式 prototype, 使得許多的工作變得容易。

          ?

          一個(gè) function 對象和根據(jù) function 構(gòu)造出來的對象是不同的。

          ?

          一個(gè) function 對象的原型其實(shí)就是一個(gè)根據(jù) function 對象構(gòu)建出來的對象。

          記住:這個(gè)對象可與 new 出來的對象不一樣。在 function 內(nèi)部的代碼并不會(huì)被執(zhí)行,如:

          this.funcName = function() 這樣的代碼。而 new 出來的對象則不然,他具有執(zhí)行后的對象特性。

          ?

          function 的局部變量相當(dāng)于 class 里的私有變量,無法在子類中獲取和操作。但 this. 的部分是可以的。

          ?

          1.1.3. ??? 猜測和假想

          (這是我推斷的,沒有任何的根據(jù),當(dāng)然也是可以測試的):

          當(dāng)一個(gè) Child new 時(shí),第一二種方法中, js 執(zhí)行器

          1 、先分配一個(gè)空間,(相當(dāng)于 this = new Object() (msdn 中有具體的描述 )

          2 、拷貝原型:

          3 、執(zhí)行構(gòu)造:也就是 Child.call(this) (相當(dāng)于 child(), 此時(shí) this 對象有值)( msdn 中有描述)

          然后執(zhí)行 Parent(); 這個(gè)時(shí)候 parent 的構(gòu)造函數(shù)執(zhí)行以下幾步:

          1 、將 parent prototype 拷貝到 object 區(qū)域,這時(shí)覆蓋了前面的區(qū)域 ( 好像測試證明 parent 的原型并不會(huì)被拷貝,此步不會(huì)被執(zhí)行 )

          2 、對這個(gè)區(qū)域執(zhí)行初始化,也就是正常的 function 調(diào)用的過程。(相當(dāng)于 Parent(),this 變量有值)

          ?

          而普通的 function 調(diào)用應(yīng)該是這個(gè)樣子:由于沒有 new 操作符,所以沒有為其分配當(dāng)前的 this( 也沒有空間 ),

          this 被放到了 window 對象上。但是 new 的時(shí)候顯然不是這樣。

          ?

          obj.func() 的調(diào)用和 func() 調(diào)用是完全不一樣的, obj.func this 對象是 obj 對象,而 func() 調(diào)用 this 對象是 window 對象,這個(gè)應(yīng)該和 jvm 中靜態(tài)方法和類實(shí)例方法調(diào)用的區(qū)別的原理一樣。

          ?

          1.2. 方法重載

          在實(shí)現(xiàn)了對象繼承之后,我開始面臨到第二個(gè)問題,重載。

          1.1.4. ??? 兩種方法

          js 怎樣實(shí)現(xiàn)重載。

          1 、簡單的重載:

          在這種重載中,子類的方法無需調(diào)用父類的方法,直接在執(zhí)行父類構(gòu)造之后,再執(zhí)行子類的重載方法,如 Parent toString() 方法,這時(shí)只需執(zhí)行 this.toString = function(){....} 就可以了。

          ?

          2 、調(diào)用父類方法的重載:

          由于 js 實(shí)際運(yùn)行時(shí)并沒有父類、子類兩個(gè)實(shí)例空間,所以 super.toString() 肯定是不行的,而在子類的 toString 方法中進(jìn)行 this.toString() 調(diào)用只能引起內(nèi)存溢出,其實(shí)這種也可以想辦法做到。

          ?

          this.super_toString = this.toString();

          this.toString=function(){

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

          ?????? this.super_toString();

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

          }

          posted @ 2006-12-28 14:39 flyffa 閱讀(1238) | 評論 (1)編輯 收藏

          主站蜘蛛池模板: 隆安县| 洪江市| 安龙县| 体育| 威海市| 司法| 香河县| 昌图县| 泰兴市| 扎兰屯市| 襄樊市| 溧阳市| 南安市| 阜城县| 理塘县| 上饶县| 朝阳县| 灵川县| 汾西县| 梧州市| 阿拉善左旗| 临潭县| 石首市| 黔西| 麻城市| 甘洛县| 成安县| 九台市| 金寨县| 萨迦县| 墨玉县| 合水县| 琼中| 西昌市| 陇川县| 沙洋县| 平南县| 肥西县| 鄂托克前旗| 扎兰屯市| 会宁县|