<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • Javascript 面向?qū)ο缶幊?/h1>
    時(shí)間:2024-11-04 19:38:04 JavaScript 我要投稿
    • 相關(guān)推薦

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

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

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

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

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

      function class1() {

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

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

      }

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

      var obj = new class1();

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

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

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

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

      */

      function test() {

      alert( typeof (obj));

      }

      上面的代碼定義了一個(gè)類class1,這就是js中簡單的封裝,下面我們看js如何定義“靜態(tà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));

      }

      接著看“抽象類”:

      /*

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

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

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

      中實(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è)抽象基類base,無構(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)抽象基類中的oninit 虛方法

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

      }

      });

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

      function test() {

      var obj = new class1();

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

      obj.oninit();

      }

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

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

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

    javascript克隆對象深度介紹07-25

    JavaScript中的三種對象10-24

    使用ajax操作JavaScript對象的方法09-28

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

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

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

    主站蜘蛛池模板: 无码国产精品一区二区免费vr| 精品深夜AV无码一区二区| 国产欧美一区二区精品性色99 | 四虎精品影库4HUTV四虎| 日韩精品久久久肉伦网站| 国产精品亚洲mnbav网站| 日韩精品无码熟人妻视频| 国产高清一级毛片精品| 国产精品成熟老女人视频| 久久夜色撩人精品国产小说| 99re6这里有精品热视频| 偷拍精品视频一区二区三区| 国产精品视频网站| 亚洲精品无码专区在线在线播放| 国产91在线精品| 成人精品视频在线观看| 亚洲AⅤ永久无码精品AA| 久久综合九色综合精品| 亚洲精品无码永久在线观看| 99久久婷婷国产综合精品草原| 国产乱人伦偷精品视频免下载| 无码精品人妻一区| 精品少妇一区二区三区视频| 九九热这里只有国产精品| 亚洲精品无码AV人在线播放| 国产精品久久网| 亚洲av成人无码久久精品| 久久久久人妻一区精品| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 久久久精品视频免费观看 | 亚洲视频在线精品| 精品国产综合区久久久久久| 久热这里只精品99re8久| 国产精品久久一区二区三区 | 久久精品国产99国产电影网| 国产精品成人观看视频国产奇米| 日韩精品一区二区三区中文 | 久久久久人妻精品一区二区三区| 亚洲av永久无码精品国产精品| 亚洲欧洲国产精品香蕉网| 亚洲а∨天堂久久精品9966|