• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. Javascript 面向?qū)ο缶幊?/h1>
        時(shí)間:2024-11-04 19:38:04 JavaScript 我要投稿
        • 相關(guān)推薦

        Javascript 面向?qū)ο缶幊?/p>

          很長(zhǎng)一段時(shí)間以來(lái)(這里本人要幸災(zāi)樂(lè)禍地說(shuō)),js是“一種點(diǎn)綴的作用,完成很有限的功能,諸如表單驗(yàn)證之類(lèi),其語(yǔ)言本身也一直被當(dāng)作過(guò)程化的語(yǔ)言使用,很難完成復(fù)雜的功能。”。但是(這里本人要苦大仇深、痛心疾首地說(shuō)),“而Ajax的出現(xiàn)使得復(fù)雜腳本成為必需的組成部分,這就對(duì) JavaScript 程序設(shè)計(jì)提出了新的要求,很多Ajax應(yīng)用開(kāi)始利用JavaScript面向?qū)ο蟮男再|(zhì)進(jìn)行開(kāi)發(fā),使邏輯更加清晰。事實(shí)上,JavaScript 提供了完善的機(jī)制來(lái)實(shí)現(xiàn)面向?qū)ο蟮拈_(kāi)發(fā)思想。”。

          這里關(guān)于對(duì)象就廢話(huà)這么多了。我們都知道面向?qū)ο缶幊痰娜齻€(gè)主要特點(diǎn)是:封裝、繼承和多態(tài)。下面就圍繞著這三個(gè)特點(diǎn),記錄一些學(xué)習(xí)心得。

          好的,先從封裝性開(kāi)始介紹,眾所周知,對(duì)象是封裝的最基本單位。封裝防止了程序相互依賴(lài)性而帶來(lái)的變動(dòng)影響。面向?qū)ο蟮姆庋b比傳統(tǒng)語(yǔ)言的封裝更為清晰、更為有力。Code is cheap.來(lái)看簡(jiǎn)單的代碼:

          // 定義函數(shù)的方式定義類(lèi)

          function class1() {

          // 類(lèi)成員的定義及構(gòu)造函數(shù)

          // 這里class1 既是一個(gè)函數(shù)也是一個(gè)類(lèi)。作為函數(shù),它可以理解為類(lèi)的構(gòu)造函數(shù), 負(fù)責(zé)初始化的工作。

          }

          // 使用new操作符獲得一個(gè)類(lèi)的實(shí)例

          var obj = new class1();

          /* 拋開(kāi)類(lèi)的概念,從代碼的形式上來(lái)看,class1 就是一個(gè)函數(shù),那么是不是所有的函數(shù)都可以用new來(lái)操作呢?答案是肯定的。

          在JavaScript 中,函數(shù)和類(lèi)就是一個(gè)概念,當(dāng)new 一個(gè)函數(shù)時(shí),就會(huì)返回一個(gè)對(duì)象。如果這個(gè)函數(shù)中沒(méi)有初始化類(lèi)成員,那就會(huì)返回一個(gè)空的對(duì)象。

          事實(shí)上,當(dāng)new一個(gè)函數(shù)時(shí),這個(gè)函數(shù)就是所代表類(lèi)的構(gòu)造函數(shù),其中的所有代碼都可以看作為了初始化一個(gè)對(duì)象而工作。用于表示類(lèi)的函數(shù)也稱(chēng)之為構(gòu)造器。

          在JavaScript 中,每個(gè)對(duì)象可以看作是多個(gè)屬性(方法)的集合

          */

          function test() {

          alert( typeof (obj));

          }

          上面的代碼定義了一個(gè)類(lèi)class1,這就是js中簡(jiǎn)單的封裝,下面我們看js如何定義“靜態(tài)類(lèi)”,

          function class1() { // 構(gòu)造函數(shù)

          }

          // 靜態(tài)屬性

          class1.staticProperty = " test " ;

          // 靜態(tài)方法

          class1.staticMethod = function () {

          alert(class1.staticProperty);

          }

          function test() {

          // 調(diào)用靜態(tài)方法

          class1.staticMethod();

          alert( typeof (class1));

          }

          接著看“抽象類(lèi)”:

          /*

          在傳統(tǒng)面向?qū)ο笳Z(yǔ)言中,抽象類(lèi)中的虛方法必須先被聲明,但可以在其他方法中被調(diào)用。

          而在JavaScript 中,虛方法就可以看 該類(lèi)中沒(méi)有定義的方法,但已經(jīng)通過(guò)this 指針使用了。

          和傳統(tǒng)面向?qū)ο蟛煌氖牵@里虛方法不需經(jīng)過(guò)聲明,而直接使用了。這些方法將在派生類(lèi)

          中實(shí)現(xiàn)

          */

          // 定義extend 方法

          Object.extend = function (destination, source) {

          for (property in source) {

          destination[property] = source[property];

          }

          return destination;

          }

          Object.prototype.extend = function (object) {

          return Object.extend.apply( this , [ this , object]);

          }

          // 定義一個(gè)抽象基類(lèi)base,無(wú)構(gòu)造函數(shù)

          function base() { }

          base.prototype = {

          initialize: function () {

          this .oninit(); // 調(diào)用了一個(gè)虛方法

          }

          }

          // 定義class1

          function class1() {

          // 構(gòu)造函數(shù)

          }

          // 讓class1繼承于base 并實(shí)現(xiàn)其中的oninit方法

          class1.prototype = ( new base()).extend({

          oninit: function () { // 實(shí)現(xiàn)抽象基類(lèi)中的oninit 虛方法

          // oninit 函數(shù)的實(shí)現(xiàn)

          }

          });

          我們看到,上面“讓class1繼承于base 并實(shí)現(xiàn)其中的oninit方法時(shí)”,使用了“繼承”的概念,請(qǐng)留意。再來(lái)看一下執(zhí)行的效果:

          function test() {

          var obj = new class1();

          obj.oninit = function () { alert( " test " ); }

          obj.oninit();

          }

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【Javascript 面向?qū)ο缶幊獭肯嚓P(guān)文章:

        javascript面向?qū)ο笾械膶?duì)象怎么理解09-02

        2016年java面向?qū)ο缶幊填}庫(kù)及答案10-24

        javascript編程異常處理的方法08-04

        javascript克隆對(duì)象深度介紹07-25

        JavaScript中的三種對(duì)象10-24

        使用ajax操作JavaScript對(duì)象的方法09-28

        關(guān)于javascript對(duì)象之內(nèi)置和對(duì)象Math的使用方法10-08

        PHP面向?qū)ο笾剌d重寫(xiě)的不同10-25

        JavaScript高級(jí)程序設(shè)計(jì):本地對(duì)象Array10-22

        在线咨询

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 久久国产精品亭亭亚洲Av | 污污网站在线观看 | 亚洲26uuu在线观看 | 亚洲国产永久免费播放片 | 亚洲精品国产综合99 | 日韩AV不卡一区二区 |

            Javascript 面向?qū)ο缶幊?/p>

              很長(zhǎng)一段時(shí)間以來(lái)(這里本人要幸災(zāi)樂(lè)禍地說(shuō)),js是“一種點(diǎn)綴的作用,完成很有限的功能,諸如表單驗(yàn)證之類(lèi),其語(yǔ)言本身也一直被當(dāng)作過(guò)程化的語(yǔ)言使用,很難完成復(fù)雜的功能。”。但是(這里本人要苦大仇深、痛心疾首地說(shuō)),“而Ajax的出現(xiàn)使得復(fù)雜腳本成為必需的組成部分,這就對(duì) JavaScript 程序設(shè)計(jì)提出了新的要求,很多Ajax應(yīng)用開(kāi)始利用JavaScript面向?qū)ο蟮男再|(zhì)進(jìn)行開(kāi)發(fā),使邏輯更加清晰。事實(shí)上,JavaScript 提供了完善的機(jī)制來(lái)實(shí)現(xiàn)面向?qū)ο蟮拈_(kāi)發(fā)思想。”。

              這里關(guān)于對(duì)象就廢話(huà)這么多了。我們都知道面向?qū)ο缶幊痰娜齻€(gè)主要特點(diǎn)是:封裝、繼承和多態(tài)。下面就圍繞著這三個(gè)特點(diǎn),記錄一些學(xué)習(xí)心得。

              好的,先從封裝性開(kāi)始介紹,眾所周知,對(duì)象是封裝的最基本單位。封裝防止了程序相互依賴(lài)性而帶來(lái)的變動(dòng)影響。面向?qū)ο蟮姆庋b比傳統(tǒng)語(yǔ)言的封裝更為清晰、更為有力。Code is cheap.來(lái)看簡(jiǎn)單的代碼:

              // 定義函數(shù)的方式定義類(lèi)

              function class1() {

              // 類(lèi)成員的定義及構(gòu)造函數(shù)

              // 這里class1 既是一個(gè)函數(shù)也是一個(gè)類(lèi)。作為函數(shù),它可以理解為類(lèi)的構(gòu)造函數(shù), 負(fù)責(zé)初始化的工作。

              }

              // 使用new操作符獲得一個(gè)類(lèi)的實(shí)例

              var obj = new class1();

              /* 拋開(kāi)類(lèi)的概念,從代碼的形式上來(lái)看,class1 就是一個(gè)函數(shù),那么是不是所有的函數(shù)都可以用new來(lái)操作呢?答案是肯定的。

              在JavaScript 中,函數(shù)和類(lèi)就是一個(gè)概念,當(dāng)new 一個(gè)函數(shù)時(shí),就會(huì)返回一個(gè)對(duì)象。如果這個(gè)函數(shù)中沒(méi)有初始化類(lèi)成員,那就會(huì)返回一個(gè)空的對(duì)象。

              事實(shí)上,當(dāng)new一個(gè)函數(shù)時(shí),這個(gè)函數(shù)就是所代表類(lèi)的構(gòu)造函數(shù),其中的所有代碼都可以看作為了初始化一個(gè)對(duì)象而工作。用于表示類(lèi)的函數(shù)也稱(chēng)之為構(gòu)造器。

              在JavaScript 中,每個(gè)對(duì)象可以看作是多個(gè)屬性(方法)的集合

              */

              function test() {

              alert( typeof (obj));

              }

              上面的代碼定義了一個(gè)類(lèi)class1,這就是js中簡(jiǎn)單的封裝,下面我們看js如何定義“靜態(tài)類(lèi)”,

              function class1() { // 構(gòu)造函數(shù)

              }

              // 靜態(tài)屬性

              class1.staticProperty = " test " ;

              // 靜態(tài)方法

              class1.staticMethod = function () {

              alert(class1.staticProperty);

              }

              function test() {

              // 調(diào)用靜態(tài)方法

              class1.staticMethod();

              alert( typeof (class1));

              }

              接著看“抽象類(lèi)”:

              /*

              在傳統(tǒng)面向?qū)ο笳Z(yǔ)言中,抽象類(lèi)中的虛方法必須先被聲明,但可以在其他方法中被調(diào)用。

              而在JavaScript 中,虛方法就可以看 該類(lèi)中沒(méi)有定義的方法,但已經(jīng)通過(guò)this 指針使用了。

              和傳統(tǒng)面向?qū)ο蟛煌氖牵@里虛方法不需經(jīng)過(guò)聲明,而直接使用了。這些方法將在派生類(lèi)

              中實(shí)現(xiàn)

              */

              // 定義extend 方法

              Object.extend = function (destination, source) {

              for (property in source) {

              destination[property] = source[property];

              }

              return destination;

              }

              Object.prototype.extend = function (object) {

              return Object.extend.apply( this , [ this , object]);

              }

              // 定義一個(gè)抽象基類(lèi)base,無(wú)構(gòu)造函數(shù)

              function base() { }

              base.prototype = {

              initialize: function () {

              this .oninit(); // 調(diào)用了一個(gè)虛方法

              }

              }

              // 定義class1

              function class1() {

              // 構(gòu)造函數(shù)

              }

              // 讓class1繼承于base 并實(shí)現(xiàn)其中的oninit方法

              class1.prototype = ( new base()).extend({

              oninit: function () { // 實(shí)現(xiàn)抽象基類(lèi)中的oninit 虛方法

              // oninit 函數(shù)的實(shí)現(xiàn)

              }

              });

              我們看到,上面“讓class1繼承于base 并實(shí)現(xiàn)其中的oninit方法時(shí)”,使用了“繼承”的概念,請(qǐng)留意。再來(lái)看一下執(zhí)行的效果:

              function test() {

              var obj = new class1();

              obj.oninit = function () { alert( " test " ); }

              obj.oninit();

              }