javascript实现简单的链式调用

用过jQuery的朋友一定对jQuery中方法的链式调用印象深刻,貌似现在很多库都支持了方法的链式调用,比如YUI3等。链式调用是一个非常不错的语法特性,能让代码更加简洁、易读。很多时候链式调用可以避免多次重复使用一个对象变量。今天有人在群里说起javascript链式调用,写了几个简单的实现方式共大家参考一下:
一般我们我用函数构造一个类,例如:


var function Dog(name,age){
        this.name = name;
        this.age = age;
    };
    Dog.prototype={
        getName:function(){
            console.log(this.name);
        },
        getAge:function(){
            console.log(this.age);
        }
    };

定义一个Dog类,并具备几个简单的方法


    var dog1= new Dog("旺旺",3);
    dog1.getName();
    dog1.getAge();

实例化,并且调用方法。

要实现链式调用是非常简单的事情,唯一需要做的就是在每个方法后面返回this。例如:


var Dog=function(name,age){
        this.name = name;
        this.age = age;
    };
    Dog.prototype={
        getName:function(){
            console.log(this.name);
            return this;
        },
        getAge:function(){
            console.log(this.age);
            return this;
        }
    };

    var dog1= new Dog("旺旺",3);
    dog1.getName().getAge();

上面的代码可以看出,Dog方法上多了一段代码:return this;
细心一点你会发现这里dog1实例前还需要一个new初始化,还是有点不方便。在改进一下:


var Dog=function(name,age){
        this.name = name;
        this.age = age;
    };
    Dog.prototype={
        getName:function(){
            console.log(this.name);
            return this;
        },
        getAge:function(){
            console.log(this.age);
            return this;
        }
    };
    window.Dogs=function(name,age){
        return new Dog(name,age);
    };
    Dogs("旺旺",3).getName().getAge();

这里在window下定义一个Dogs方法,作为Dog的别名,这样就可以直接用Dogs(“旺旺”,3).getName().getAge();这样调用了。
苛刻的网友说这样太暴露了,这样有两个全局变量变量Dog和Dogs,在改进一下:


var Dog=function(name,age){
        if(!(this instanceof Dog)){
            return new Dog(name,age);
        }
        this.name = name;
        this.age = age;
    };
    Dog.prototype={
        getName:function(){
            console.log(this.name);
            return this;
        },
        getAge:function(){
            console.log(this.age);
            return this;
        }
    };
    Dog("旺旺",3).getName().getAge();

这里在构造函数中加了这么一句:


if(!(this instanceof Dog)){
     return new Dog(name,age);
}

判断this是否为Dog实例,如果不是就创建一个新实例。

更为安全代码:


(function(){
        var Dog=function(name,age){
            if(!(this instanceof Dog)){
                return new Dog(name,age);
            }
            this.name = name;
            this.age = age;
        };
        Dog.prototype={
            getName:function(){
                console.log(this.name);
                return this;
            },
            getAge:function(){
                console.log(this.age);
                return this;
            }
        };
        return (window.Dog=Dog);
    })();
    Dog("旺旺",3).getName().getAge();

或者:


(function(){
        var Dog=function(name,age){
            this.name = name;
            this.age = age;
        };
        Dog.prototype={
            getName:function(){
                console.log(this.name);
                return this;
            },
            getAge:function(){
                console.log(this.age);
                return this;
            }
        };
        window.Dogs=function(name,age){
            return new Dog(name,age);
        };
    })();

    Dogs("旺旺",3).getName().getAge();

希望对新手有所帮助,如有不对之处欢迎留言拍砖斧正!

首届海宁春季文化旅游节活动中国潮人秀

首届“中国潮人秀”Logo与活动页面设计。

Read More »

公司招聘视觉设计师

岗位职责:
参与公司平台UI设计,兼少量平面设计。

任职要求:
1.熟练WEB设计,有大型交互性网站设计经验。
2.熟练平面设计,有成熟的平面设计作品。
3.熟悉flash动画制作或前端开发经验的优先考虑。
4.能独立担当设计工作,能保持乐观精神,善于团队合作。良好的设计表现力和设计沟通能力。
5.相关行业、相关职位工作2年以上。

公司:浙江搜道网络技术有限公司
工作地点:杭州 北部软件园

投简历邮箱及联系方式:zxb[@]mysodao.com

设计师需要掌握的印刷知识

1.分辨率(DPI)
分辨率是一个平面设计师必须掌握的一项基础知识,而网页设计是不需要掌握的。
分辨率只存在与打印与印刷等牵涉到物理宽度的案例中。
分辨率代表的是一段物理宽度范围内像素点的多少。所以,在平面设计中,普遍使用的宽度是CM/MM/M,没有一个平面印刷设计稿是用PX来设定宽度的。
你会发现在PS中修改分辨率只是简单的修改图片大小而已,因为PS要调整图片大小来适应印刷机的分辨率。
打个比方,你可以把你的平面作品看成一杯满满的沙子,那么其中每一粒沙子就是图像的像素点,而杯子则是你印刷产品的画布,那么沙子之间的间距就是分辨率了,因为杯子(产品画布)、沙子(图像)是不能变的,为了让这杯子里的沙子不会溢出或者看起来过少,那么你必须调整沙子之间的间距,也就是分辨率。

那么到底该设置多少分辨率呢。
这得看印刷的产品而定。
一般情况下:
宣传册/打印机打印 DPI:300
易拉宝/灯箱片 DPI:150
大型户外广告 DPI:25/35/50

在网页设计中是不需要设置分辨率的,因为你的宽度是PX表示,不管设置多少分辨率都是一样的,有个特例是在PS中,如果你的文字大小单位用“点”来表示,你将需要把分辨率调至72DPI,以达到1点=1PX的环境。
另外利用CD/AI这样的矢量工具设计的作品,是不需要设置分辨率的,那是在导出图片或打印的时候设置的。
Read More »

动动鼠标点击看看这是啥

2011兔年吉祥,我们给大家准备了点惊喜

想知道这是啥惊喜吗?

暂时不告诉您们,除非……

您可以点击进来看看,看看真相到底是啥样的。

假如您不想来,那么……

我们的温馨提示“拍着巴掌欢迎您们参观,如钟意请下回再来,如有不钟意还是请下次再来,精彩的肯定是在最后面”

动动您们的鼠标吧~

Read More »

平面设计之搜道网美女盛典与奢侈品展

来个问答题:

Q:什么是平面设计?

A:(1) 用一些特殊的操作来处理一些已经数字化的图像的过程。

(2) 它是集电脑技术、数字技术和艺术创意于一体的综合内容。

平面设计是有目的的策划,平面设计是这些策划将要采取的形式之一,在平面设计中你需要用视觉元素来传播你的设想和计划,用文字和图形把信息传达给受众,让人们通过这些视觉元素了解你的设想和计划,这才是我们设计的定义。一个视觉作品的生存底线,应该看他是否具有感动他人的能量,是否顺利地传递出背后的信息,事实上她更象人际关系学,依*魅力来征服对象,你的设计有抓住人心的魅力吗?是一见钟情式的还是水到渠成式的,你需要象一个温文尔雅的绅士还是一个不修边幅的叛逆之子,或是治学严谨的学者。事实上平面设计者所担任的是多重角色,你需要知己知彼,你需要调查对象,你应成为对象中的一员,却又不是投其所好,夸夸其谈,你的设计代表着客户的产品,客户需要你的感情去打动他人,你事实上是“出卖”感情的人,平面设计是一种与特定目的有着密切联系的艺术。

不晓得我这样的解释是否看的懂,是否合理呢需要大家自己去揣摩。

Read More »

用户的认证标识设计

大家好,本人在此献丑了,如有不对不很合理之处还望各位见谅!

ICON语言是一种高级编程语言,具有强有力的字符串及结构分析和处理能力,特别适合于解决人文科学领域中的问题,所以在欧美的许多大学的文科院系里,把ICON语言作为必修的课程。
下面我来讲解一下设计图标的一点小小心得:

图标是可视操作系统的重要元素。图标是一种标志,它代表一文档,一段程序,一张网页,或是一段命令。通过图标你可以执行一段命令或打开某种类型的文档,你所要做的只是在图标上单击或双击一下。有了图标,在一大堆乱七八糟的文件中找出一种文件就不是一件海底捞针的事了。具有相同括展名的文档享有同一个图标,这一点地球人都知道。
如果你只是使用图标,知道这些足够了。如果你想自己搞一些图标的设计,你则需要知道的更多。 Read More »

搜道洋葱头表情包下载

搜道洋葱头表情包下载共57个:点击下载



2010杭州国际马松

杭州国际马拉松舞台背景墙,留影处与签名墙设计,绝对OK!

蓝色背景,黄色字相互对比大气~~

马拉松整体背景 留影处 签名墙设计

主背景

本次活动于2010年11月在杭州黄龙体育中心举办

支持圆角透明的tab自适应选项卡

http://d2.sodao.com/demo/tab/index.html
结构还是先前的a>span,只是利用了margin-right把span拉出a,这样就可以做到圆角透明了。