Reference

  • [1]static method in javascript
  • http://stackoverflow.com/questions/1535631/static-variables-in-javascript
  • [2]Public / Private variable and method 
  • http://phrogz.net/JS/classes/OOPinJS.html

 

Agenda:

  • class
  • constructor
  • inheritance & prototype
  • static method
  •  

 

static method

與其他語言不一樣的, 因為javascript所有東西都是object , 所以建立static method就等於建立一個新的function object.

但這樣的方法沒辦法直接存取class裡面的variable, 必須先new出一個object來幫忙. (不過也只能access到public variable, 這點應該是合理.)


function ClassDemo(attr){
    var private_name = "I am private variable";
    this.public_name = "I am public variable";
}

ClassDemo.show = function(obj){
    alert(obj.private_name);
    alert(obj.public_name);
}

function main(){
    ClassDemo.show(new ClassDemo());
}

 

inheritance & prototype

在javascript中要進行繼承, 必須要藉由prototype的形式.


function ClassDemo(attr){
    this.name = "I am base class";
}
ClassDemo.prototype.show = function(){
    alert(this.name);
}


subClass.prototype = new ClassDemo();
subClass.prototype.constructor = subClass;
function subClass(attr){
    this.name = "I am sub class";
}

function main(){
    var obj = new ClassDemo();
    obj.show();
    obj = new subClass();
    obj.show();
}

 

 

constructor

在javascript裡面並沒有constructor, 不過因為我們是用fucntion來模擬, 所以本身就可以帶入參數來進行初始化.


function ClassDemo2(attr){
    this.member_one = attr.name
    this.show = function(){
        alert(this.member_one);
    }
}


function main(){
    var obj = new ClassDemo2({"name" : "Name of member one is Tom!"});
    obj.show();
}

 

class

在javascript中並沒有class, 但是在javascript裡面所有東西都是object, 所以我們可以藉由這樣的特性來模擬出class的用法.

也就是先建立出一個function的object, 在藉由這個function object 建立出一個新的object.


function ClassDemo(){
    this.member_one = "this is member one!"
    this.show = function(){
        alert(this.member_one);
    }
}


function main(){
    var obj = new ClassDemo();
    obj.show();
}

 

 

arrow
arrow
    全站熱搜

    JerryCheng 發表在 痞客邦 留言(0) 人氣()