熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Javascript >> 正文

JScript創建自己的對象

2013-11-12 23:36:52  來源: Javascript 

  創建自己的對象
  要創建自己的對象實例必須首先為其定義一個構造函數構造函數創建一個新對象賦予對象屬性並在合適的時候賦予方法例如下面的示例為 pasta 對象定義了構造函數注意 this 關鍵字的使用它指向當前對象

  // pasta 是有四個參數的構造器
  function pasta(grain width shape hasEgg)
  {
  // 是用什麼糧食做的?
  thisgrain = grain;

  // 多寬?(數值)
  thiswidth = width;

  // 橫截面形狀?(字符串)
  thisshape = shape;

  // 是否加蛋黃?(boolean)
  thishasEgg = hasEgg;
  }
  定義了對象構造器後用 new 運算符創建對象實例

  var spaghetti = new pasta(wheat circle true);
  var linguine = new pasta(wheat oval true);
  可以給對象實例添加屬性以改變該實例但是用相同的構造器生成的其他對象定義中並不包括這些屬性而且除非你特意添加這些屬性那麼在其他實例中並不顯示出來如果要將對象所有實例的附加屬性顯示出來必須將它們添加到構造函數或構造器原型對象(原型在高級文檔中討論)中

  // spaghetti 的附加屬性
  lor = pale straw;
  spaghettidrycook = ;
  spaghettifreshcook = ;

  var chowFun = new pasta(rice flat false);
  // chowFun 對象或其他現有的 pasta 對象
  // 都沒有添加到 spaghetti 對象
  // 的三個新屬性

  // 將屬性foodgroup加到 pasta 原型對象
  // 中這樣 pasta 對象的所有實例都可以有該屬性
  // 包括那些已經生成的實例
  pastaprototypefoodgroup = carbohydrates

  // 現在 spaghettifoodgroupchowFunfoodgroup等等
  // 均包含值carbohydrates
  在定義中包含方法
  可以在對象的定義中包含方法(函數)一種方法是在引用別處定義的函數的構造函數中添加一個屬性例如下面的示例擴充上面定義的 pasta 構造函數以包含 toString 方法該方法將在顯示對象的值時被調用

  // pasta 是有四個參數的構造器
  // 第一部分與上面相同
  function pasta(grain width shape hasEgg)
  {
  // 用什麼糧食做的?
  thisgrain = grain;

  // 多寬?(數值)
  thiswidth = width;

  // 橫截面形狀?(字符串)
  thisshape = shape;

  // 是否加蛋黃?(boolean)
  thishasEgg = hasEgg;

  // 這裡添加 toString 方法(如下定義)
  // 注意在函數的名稱後沒有加圓括號
  // 這不是一個函數調用而是
  // 對函數自身的引用
  thistoString = pastaToString;
  }

  // 實際的用來顯示 past 對象內容的函數
  function pastaToString()
  {
  // 返回對象的屬性

  return Grain: + thisgrain + \n +
   Width: + thiswidth + \n +
   Shape: + thisshape + \n +
   Egg?: + Boolean(thishasEgg);
  }

  var spaghetti = new pasta(wheat circle true);
  // 將調用 toString() 並顯示 spaghetti 對象
  // 的屬性(需要 Internet 浏覽器)
  windowalert(spaghetti);


From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/11139.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.