無標題文檔

琐事一堆,懒得理

过年以后就似乎注定着事情会特别得多。

与老母在电话中得知, 说可能今年要租房子住了 。对此我很是匪夷所思,明明是有我们自己的房子的,为什么要搬出去住?老母无奈的说了一句,政×府说我们的新房子还没有安置好,但是先要让我们搬出来住。

https://friable.rocks/_/2009_11_05/05299516342a.jpg

我但愿她老人家再次神经过敏(这里没有咒她老人家的意思),否则 我的那些家当 就完全有可能没有了。对于此,我相信包括我家在内的所有要搬迁户都会有个合理的说法(2008 年的确是重要的一年)。但是,我不想有任何媒体的介入,否则我晚上睡觉都可能会梦见,母亲拿着枚钥匙,在镜头面前含着泪直夸「××好,××是我们的大救星。」

不过,是的,这的确是个噩梦。

``

这年头买个感冒药都比买春×药要难。屋漏偏逢连夜雨,这几天 小妮子 偶感风寒,害得我晚上十点多都得跑出去买药(的确有点晚了)。可怜就近的药店都关门了,突然想起附近有家医院(就不点名了),遂犹如找到绿洲般奔向那里。

「您好,你这里有感冒药买吗?」
「没有!」(请注意这个感叹号)
「您这里不是医院吗,怎么会没有药买呢?」
「我们不卖药,生病挂急诊。」

这个时候我发现我是天底下最幸运的人,幸亏妮子患的是感冒!对此,我不想多言,别人说的我都有理由不相信,而这次的的确确是真正经历过了。

最可笑的是,深夜灯火阑珊,我失意得走在回家的路上,突然看见张硕大的广告牌,粉红色的霓虹灯勾绘出一个字:「药」。但我的兴奋的之情在三秒钟瞬间被蒸发,那是家卖 保健品 的。

``

在月底前离开我从实习至今的公司,心情很复杂,对于未来的期待同时也有些许的酸楚。离开公司的原因有很多,期间我在 Blog 上或多或少的提到过。

在离开之前我答应 Badbuild 启动新的项目,说实话我至今还是在犹豫中,我是非常希望能有个开头,同时也能有个结尾。但不管怎么样,不管结果如何,我希望能在最后那么短的时间内帮上团队的忙。

对于此的最终结果是什么,说实话我自己也不讲清楚。但是我突然意识到,其实真正 优秀的团队 最需要的不是拥有多么高超的技术,而是活跃的思维和创新的意识。

``

最后,我不知道在 Blog 上聊这些东西合不合适,但毕竟只有在宣泄了以后才会觉得舒服,压抑了太久恐怕会出现问题。不管怎么样,对于未来,就犹如我 前面所言 ,还是充满了信心的。

这些都是些琐事,懒得理、不用理,自己尽心尽力(说着耳熟)、问心无愧,就可以了。

外婆家聚餐

早已有人说过,我这个人非常的土而且废话比较多。人家好好的聚个餐,然后我却非常「不识相」的疯狂拍照。这不禁让我想起国人去国外旅游的场景 -- 某旅游团去日本旅游,拿着「Made in China」的日本相机,看见东西就拍。

不过本人也非做得那么的过火,只是在上菜之余由于无聊自拍自乐而已。年后时常有同事聚餐,在这样一个「特殊」的日子里,多年同事之间的聚餐变得尤其的温馨。

https://friable.rocks/_/2009_11_05/7490551908be.jpg

男人点菜和买单的时候是最帅的,看来的确是如此。这就是我们这次的东家, van 兄 (你不认识我啦, 就是上次砸雪球的那个 )。

https://friable.rocks/_/2009_11_05/8983351908eb.jpg

外婆家的冷菜还是比较可以的,毛豆和鸡爪都不错,但可惜还未等我下筷,就已经席卷一空了。

https://friable.rocks/_/2009_11_05/0417051908f7.jpg

经过圣洁的洗礼,作为弥补和纪念拍张扫荡以后的场景。这可以用「风卷残云」四个字形容再合适不过了。

https://friable.rocks/_/2009_11_05/029245190904.jpg

从每个人的餐盘就可以看出此人的食欲来。无论是质量还是数量, 小妮子 的餐盘总是以绝对性的优势胜出。

https://friable.rocks/_/2009_11_05/32355519090f.jpg

同样,外婆家的珊瑚虾是也是非常美味的。可惜已经没有拍到虾了,在哪里了呢?看下文中某人的餐盘就知道了。

https://friable.rocks/_/2009_11_05/402495190927.jpg

有奖竞猜时间,手中的白色有空长条状物体是什么东西 -- 猜中者奖励本人初吻(送货上门,不限时长、不限次数)。

https://friable.rocks/_/2009_11_05/724455190935.jpg

最后,离开外婆家时发现了张应聘表。此地食物如此美味,自然在这里上班也是非常享受的事情。有关杭州外婆家餐馆的具体信息,可以 参考这里

面向对象的 Javascript (声明篇)

有时间重新审视了遍 Javascript 的面向对象机制。与其他的语言不同,Javascript 可以说提供了更灵活的面向对象机制(比如 function 在完成其自身功能的同时也是对象)。

由于才疏学浅,我不得不将 《Javascript 高级程序设计》 中的部分内容摘抄过来,这些同时也算是我的读书笔记吧。由于 Javascript 面向对象机制及其的重要,而且内容非常的繁多,在这里就分篇章逐个介绍。

使用对象首先就是声明它(内置的对象当然就不需要了)。该死的 Javascript 总是会让我们死去很多的脑细胞,这篇文章主要说明下声明 Javascript 类的几种方法。

工厂模式

工厂模式可能是很多开发人员使用的一种模式,简单的说这种方法先定义「地基」,然后在往上面扔(绑定)各种功能和属性。下面的代码可能看起来会非常的熟悉:

var oCar = new Object;
oCar.color = "red";
oCar.showColor = function() {
    alert(this.color);
}
oCar.showColor();

当然,既然包装成一个类,就要重用它(上面的方法从语法上说仅仅是变量)。可以使用返回特定对象的工厂函数(factory function)将其封装起来:

function createCar() {
    var oCar = new Object;
    oCar.color = "red";
    oCar.showColor = function() {
        alert(this.color);
    }

    return oCar;
}
oCar = createCar();
oCar.showColor();

当然,变通一下,可以在 createCar 函数上加入些参数,这样看起来已经非常地专业了:

function createCar(sColor) {
    var oCar = new Object;
    oCar.color = sColor;
    oCar.showColor = function() {
        alert(this.color);
    }

    return oCar;
}
oCar = createCar();
oCar.showColor();

匿名函数总是让人感觉非常的高深,但是有时候也会迷惑了自己。如果不考虑篇幅,可以外部定义它:

function showColor() {
    alert(this.color);
}

function createCar(sColor) {
    var oCar = new Object;
    oCar.color = sColor;
    oCar.showColor = showColor;

    return oCar;
}
oCar = createCar();
oCar.showColor();

这样做还有一个好处,就是不用重复定义 oCar.showColor 了(高效率的程序每个人都喜欢)。

构造函数模式

构造函数其实和工厂方式差不多。从代码量上来说,就是省略了构造函数内部没有创建一个对象。

function Car(sColor) {
    this.color = sColor;
    this.showColor = function () {
        alert(this.color);
    }
}
oCar = new Car("red");
oCar.showColor();

其实此隐含的对象已经在 new 以后就被实例化了。默认情况下,构造函数返回的就是其 this 的值(所以不必使用 return 返回)。但构造函数模式和工厂模式一样可能会重复定义方法,这点可以参考上述工厂模式的做法避免它(始终看起来不完美)。

原型模式

已经受够重复定义的问题了,那么有没有完美的解决办法呢?当然有。使用原型方法可以有效的避免此类的问题。

function Car() {}
Car.prototype.color = new Array("red", "green", "blue");
Car.prototype.showColor = function() {
    alert(this.color);
}
oCar = new Car();
oCar.showColor();

但是使用此模式需要注意的是类中的所有属性和方法都是共用的(其实就是指针)。这意味着虽然被实例化的两个变量,如果其中一处的值被更改,那么另外一个就也会被更改。

注:此段内容有更改,详细请参见 这里这里 (感谢 fish 兄弟提出)。

混合模式

看起来越来越完美了,结合上述学到的方法就很容易解决原型模式的问题,这样看起来就更像是专业的程序员了。

function Car(sColor) {
    this.color = sColor;
}
Car.prototype.showColor = function() {
    alert(this.color);
}
oCar = new Car("red");
oCar.showColor();

上述的方法声明的类, showColor 方法是原型(仅创建了一个实例),其他的都是构造(互不干扰)。

动态原型模式

把自己的方法仍在外面总不是件非常环保的事情,下面的方法就非常的「绿色」:

function Car() {
    this.color = "red";
    if (typeof Car._initialized == "undefined") {
        Car.prototype.showColor = function() {
            alert(this.color);
        };
        Car._initialized = true;
    }
}
oCar = new Car("red");
oCar.showColor();

此方法于上述的混合模式效果一致,即在构造函数内定义属性,而方法则使用原型模式。唯一的区别就是赋予对象方法的位置。

混合工厂模式

混合工厂模式可以认为是构造模式与混合模式的整合,因为 function 本身就是一个对象,所以可以使用 new 来实例化(请允许我这样描述)。

function Car() {
    var oCar = new Object;
    oCar.color = "red";
    oCar.showColor = function() {
        alert(this.color);
    }

    return oCar;
}
oCar = new Car();
oCar.showColor();

不过建议避免使用此方法定义,因为于上述的工厂模式一样,它存在重复声明的问题。

选用何种模式?

其实通过上面的描述已经有所结果,通常使用的是 混合模式 与 动态原型模式 (我个人投动态原型模式一票)。不过不要单独使用 工厂模式 与 构造模式 (或者其两者的结合体),因为这样会造成不必要的浪费。

附,上述的代码 打包下载

未完待续

我的照片

嗨!我叫「明城」,八零后、码农、宁波佬,现居杭州。除了这里,同时也欢迎您关注我的 GitHubTwitterInstagram 等。

这个 Blog 原先的名字叫 Gracecode.com 、现在叫 「無標題文檔」 。 要知道作为码农取名是件很难的事情,所以不想在取名这事情上太费心思。

作为八零后,自认为还仅存点点可能不怎么被理解的幽默感,以及对平淡生活的追求和向往。 为了避免不必要的麻烦,声明本站所输出的内容以及观点仅代表个人,不代表自己所服务公司或组织的任何立场。

如果您想联系我,可以发我邮件 `echo bWluZ2NoZW5nQG91dGxvb2suY29tCg== | base64 -d`

分类

搜索

文章