建立乙個新類,使用dom.factory方法,很明顯它是乙個工廠方法,批量生產各種各式的類。
var myfirstclass = dom.factory(
});var obj = new myfirstclass();
obj.sayhello();//hello world
繼承:
var animal = dom.factory(,
eat: function()
});var human = dom.factory(
});var peter = new human('peter');
peter.eat();//yummie
peter.speak();//peter said bla bla bla
var pat = dom.factory(
});var pat = new pat('pat',18);
alert(pat.name)//pat
alert(pat.age)//18
pat.speak();//pat said bla bla bla
方法鏈。就是在當前方法呼叫其父類的同名方法。
var girl = dom.factory(
});var fancygirl = dom.factory(
});var g = new girl;
alert(g.sayhello());
var f = new fancygirl;
alert(f.sayhello());
內部方法:
dom.require("lang");
dom.require("oop")
var person = dom.oop(,
secret: function().protect(), //定義其為內部方法,只能內部呼叫
describe: function(). #. i kid, i kid.".instead();
}});
var scott = new person('司徒正美');
// alert(scott.secret());//報錯 the method "secret" cannot be called.
alert(scott.describe());//hi, i'm scott. i sometimes like girly drinks. i kid, i kid.
singleton,標識生產的新類為單例類:
var god = dom.factory(
},singleton:true//注意這裡,使用singleton屬性
});var god = new god("耶和華");
god.alertname(); //alerts 耶和華
var lucifer = new god("撒旦");
lucifer.alertname(); //alerts 耶和華
alert(god === lucifer )//alerts true
alias,別名機制:
var array2 = dom.factory(,
setarray: function (arr) ,
tostring: function () ,
valueof: function () ,
pop:.pop,
push:.push,
shift:.shift,
unshift:.unshift,
reverse:.reverse,
indexof: function(el,index)
});array2.alias("indexof","contains")
var a = new array2(1,2,3,4,5);
alert(a)//測試tostring方法
alert(a.indexof(3))
alert(a.contains(3))//測試別名機制
include,包含,類似ruby,新增原型成員。
var movable = ,
fly:function()
}var recognition =,
smell:function()
}var robot = dom.factory(,
include:[movable,recognition]
});var chi = new robot("小嘰","chobits") ;
alert(chi.name);
chi.watch();
chi.fly();
extend,擴充套件,類似ruby,新增類成員。
var myclass = dom.factory({});
myclass.extend(,
alertpi:function()
});myclass.alert();//這是靜態(類)方法
myclass.alertpi();
var m = new myclass
m.alert()//報錯myclass is not defined
自擴充套件與自包含:
var module = ,
selfextended: function(klass)
};var myclass = dom.factory();
alert(myclass.prototype.boo); // -> 'boo'
alert(myclass.boo); // -> 'boo'
dom.geometry = {};
var point = dom.geometry.point = dom.factory(,
tostring: function() ,
clone: function() ,
eq: function(point) ,
//移動點到新的位置
offset: function(x, y)
this.x += x;
this.y += y;
return this;
},extend:
}});
新增原型成員。
var movable = ,
fly:function()
}var recognition =,
smell:function()
}var robot = oop(,
include:[movable,recognition]
});var chi = new robot("小嘰","chobits") ;
p(chi.name);
chi.watch();
chi.fly();
Ruby學習 Ruby類的使用
簡單的類定義和呼叫 如下 customer.rbclass customer g number 0 def initialize id,name,address m id id m name name m addr address g number 1 enddef display details ...
Windows Vista中的預覽功能簡單介紹
office 文件如word excel powerpoint檔案甚至e mail均得到支援。在windows vista中,要啟用預覽,設定非常簡單,單擊資源管理器工具欄中的 組織 在下拉列表中選擇 布局 然後選中 預覽窗格 即可。而若欲關閉預覽,則可按同樣的操作步驟,取消對 預覽窗格 的選擇。下...
我的程式設計命名風格
1.變數命名 1 全域性變數 採用大駝峰命名法,即每個詞開頭字母大寫,例如plaintext 2 區域性變數 採用小駝峰命名法,即第乙個詞開頭字母小寫,之後的每個詞開頭字母大寫,例如tmpdata 這樣命名的好處在於便於識別全域性變數。什麼時候使用下劃線?當第乙個詞表示乙個特定物件時,後面加下劃線,...