1. 程式人生 > >2015-11

2015-11

blog 程序設計 class 不存在 lte global div pre 而且

1、《JavaScript高級程序設計》

  • 變量命名,由於js是弱語言,為了便於閱讀,可在變量前加上類型。(個人感覺對於不經常用的人,還是不太好記)如:數組aValues,布爾bValue,整型iValue,對象oType
  • 函數實際上是一個Function對象。但最好不要這樣用,慢而且不直觀。
function doAdd(iNum) {
    alert(iNum + 100);
}

等價於

doAdd = new Function("iNum", "alert(iNum + 100)");
  • 都有函數都必須是某個對象的方法,即Global對象,但是Global其實是一個不存在的對象,不能顯示調用它。
  • 可以給構造函數提供屬性和方法。
function sayHi(){
  alert("hi");
}

sayHi.alternate = function(){
  alert("hola");
};

sayHi();
sayHi.alternate();
  • 定義和創建對象

1、工廠方式

function createCar(){
  var oTempCar = new Object;
  oTempCar.doors = 4;
  ...
  oTempCar.run = function(){
  ...
  }
}
var car = createCar();

缺點是每次都會創建自己的函數版本

改進:

function run(){

}

function createCar(){
  var oTempCar = new Object;
  oTempCar.doors = 4;
  ...
  oTempCar.run = run;
}

var car = createCar();

2、構造函數方式

function Car(){
  this.doors = 4;
  ...
  this.run = function(){
  ...
  }
}
var car = new Car();

只是new的時候更像對象類,但是還是會重復創建函數

3、混合的構造函數/原型方式

function Car(){
  this.doors = 4;
  ...
}
Car.prototype.run = function(){
  ...
}

var car = new Car();

4、動態原型法

把方法像java一樣寫在Car類中。

function Car(){
  this.doors = 4;
  ...
  if(typeof Car._initialized == "undefined"){
       Car.prototype.run =  function(){
      ...
    };
    Car._initialized = true;
  }
}

2015-11