D3.js的风格-链式调用

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">

    <title>Functional Javascript</title>
    <link rel="stylesheet" type="text/css" href="../../css/styles.css"/>
    <script type="text/javascript" src="../../lib/d3.js"></script>
</head>

<body>

<script type="text/javascript">
    function SimpleWidget(spec) {
        var instance = {}; // <-- A

        var headline, description; // <-- B

        instance.render = function () {
            var div = d3.select('body').append("div");

            div.append("h3").text(headline); // <-- C

            div.attr("class", "box")
               .attr("style", "color:" + spec.color) // <-- D
               .append("p")
                   .text(description); // <-- E

            return instance; // <-- F
        };

        instance.headline = function (h) {
            if (!arguments.length) return headline; // <-- G
            headline = h;
            return instance; // <-- H
        };

        instance.description = function (d) {
            if (!arguments.length) return description;
            description = d;
            return instance;
        };

        return instance; // <-- I
    }

    var widget = SimpleWidget({color: "#6495ed"})
            .headline("Simple Widget")
            .description("This is a simple widget demonstrating functional javascript.");
    widget.render();
</script>

</body>
</html>

重点在G标记和H标记
headline在参数不同的情况下,可以分别作为setter和getter
不传参数,从G返回一个子对象headline(父对象的属性),headline是getter
传入参数,从H返回一个父对象instance(设置了属性的),headline是setter
在返回的instance上可以立刻执行另一个函数,此即为链式调用.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,187评论 6 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,010评论 19 139
  • 配角入戏太深 是场灾难 躲在一角的女主人 把耳环当戒指 戴了一辈子
    留子尧阅读 197评论 0 3
  • 看到这条消息之后,我简直不敢相信自己的眼睛,恰好今天刚看完猩球崛起,没想到类似电影的场景竟然在现实生活中真的存在。...
    咖啡店里的加菲阅读 423评论 0 0
  • 无关乎其他 我喜欢的就是你这个人 喜欢你的哈哈大笑 喜欢你的欲言又止 喜欢你和我一起走过的路 喜欢你和我一起看过的...
    马卡龙的坚强阅读 1,763评论 0 0