Ruby's Louvre

每天学习一点点算法

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

dom Framework oop模块

此模块提供强大的面向对象编程能力,非常感谢mootools等先行者做出的有益探索,虽然现在我放出来的版本比最初的削减了许多功能,但依然非常强大。

一些示例:

继承。

var Animal = dom.oop({
  init: function(name) {
    this.name = name;
  },
  eat: function() {
    dom.console.log('yummie');
  }
});
 
 
var Human = dom.oop({
  inherit: Animal,//注意这里,使用inherit
  speak: function() {
    dom.console.log(this.name + ' said bla bla bla');
  }
});
 
var peter = new Human('peter');
peter.eat();//yummie
peter.speak();//peter said bla bla bla
 
var Pat = dom.oop({
  inherit: Human,//注意这里,使用inherit
  init: function(name,age) {//注意这里name
    this.age = age//隐式调用父类构造子
  }
});
 
var pat = new Pat('pat',18);
dom.console.log(pat.name)//pat
dom.console.log(pat.age)//18
pat.speak();//pat said bla bla bla

单例类。

var God = dom.oop({
  init:function(name){
    this.name = name;
    this.alertName = function(){
      dom.console.log(this.name)
    }
  },
  singleton:true//注意这里,使用singleton属性
});
var god = new God("耶和华");
god.alertName();      //alerts 耶和华
var lucifer = new God("撒旦");
lucifer.alertName();   //alerts 耶和华
dom.console.log(god === lucifer )//alerts true

内部方法,只能用于类的内部与其子类。注意,是方法不是属性。

var Person = dom.oop({
  init: function(name){
    this.name = name;
  },
  "protected secret": function(){//定义一个内部方法,要用"protected "作为前缀
    return 'I sometimes like girly drinks';
  },
 
  describe: function(){
    return "Hi, I'm #{name}. #{secret}. I kid, I kid.".instead({
      name: this.name,
      secret: this.secret()
    });
  }
});
 
var scott = new Person('司徒正美');
try{
  scott.secret()
}catch(e){
  dom.console.error(e);//Error: The method "secret" is protected!
}
dom.console.log(scott.describe());//Hi, I'm Scott. I sometimes like girly drinks. I kid, I kid.

更多见文档!

文档下载地址

下载回来后对着文件点右键-->属性-->解除锁定。

如果大家对上述方法有什么更好的实现,请不吝赐救!

人人都想有套房,为房辛苦为房忙,薪金贬值囊中涩,房价攀高节节扬;也曾誓做租房客,不助房商做盗强,多年女友离我去,没房谁做你新娘! 怨天怨地怨父母,生不逢时世态凉,人间广厦千万所,何处容我把身藏! 节衣缩食攒首付,借遍亲友与同窗,总算看到东方亮,却告房政有新章;政府调控只靠税,羊毛出处还是羊,未见房价有所减,倒为官家填满仓! 量力而行精打算,勉强买套小平方,窝大窝小终是有,手里有房心不慌。 新房到手喜一瞬,做上房奴苦漫长:工资月月无所剩,利率频调总受伤,戒烟戒酒减消费,加班加点为还偿;现任女友看房嫁,只能分享不分当,人过三十无生养,嫌贫不敢要儿郎;都说男人该潇洒,兜里无钱怎风光,人前总觉三分矮,背后更感九转肠! 哎,为房累,致心茫,苦难奈,欲崩狂, 曾经年少风华茂,而今华发早生霜,半世蹉跎半世过,一生幸福一生亡!

如果您觉得此文有帮助,可以打赏点钱给我支付宝1669866773@qq.com ,或扫描二维码

posted on   司徒正美  阅读(2448)  评论(10编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示