6-dojo/_base/lang

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <meta charset="utf-8" />
    <script src="dojoTools/dojo/dojo.js.uncompressed.js"></script>
    <script>
        require(["dojo/dom", "dojo/dom-attr", "dojo/dom-construct", "dojo/string", "dojo/_base/array", "dojo/_base/lang", "dojo/query", "dojo/_base/window", "dojo/on", "dijit/dijit", "dijit/TitlePane", "dojo/parser", "dojo/domReady!"], function (dom, domAttr, domConstruct, str, array, lang, query, win, on, dijit, TitlePane, parser) {
            //1.var newObject=lang.clone(objcet);//复制对象,深复制
            on(dom.byId("clone"), "click", function () {
                var n = query(".someNode")[0];
                var i = 10;
                while (i--) {
                    domConstruct.place(lang.clone(n), win.body());
                }
            });


            //2.lang.delegate():给对象添加新的属性..返回一个新的对象..新复制的对象对原属性仍旧引用
            //var newObject=lang.delegate(anOldObject,{myNewProperty:"value or text"});
            on(dom.byId("delegate"), "click", function () {
                var anOnldObject = { bar: "bar" };
                var myNewObject = lang.delegate(anOnldObject, { thud: "xyzzy" });
                console.log(myNewObject.thud);//xyzzy
                console.log(myNewObject.bar);//bar
                console.log(anOnldObject.thud);//undefine
                console.log(anOnldObject.bar);//bar

                anOnldObject.bar = "thonk";
                console.log(anOnldObject.bar);//thonk
            });

            //3.lang.exists(paths,namespace)//判断路径是否存在
            //if (lang.exists("myns.widget.Foo")) {
            //    console.log("myns.widget.Foo");
            //}
            on(dom.byId("exists"), "click", function () {
                var widgetType = "form.Button";
                var myNamespace = "docs";
                if (lang.exists(widgetType, myNamespace)) {
                    console.log("There's a docs.form.Button available");
                } else if (lang.exists(widgetType, dijit)) {
                    console.log("Dijits form.Button class is available");
                } else {
                    console.log("No form.Button classes are available");
                }
            });

            //4.lang.extend(class,{attribute:value})
            on(dom.byId("extend"), "click", function () {
                lang.extend(TitlePane, {
                    randomAttribute: "value"
                });
                parser.parse();

            });

            //var myClass = function () {
            //    this.defaultProp = "default value";
            //};
            //myClass.prototype = {};
            //console.log("the class (unmodified):", json.stringify(myClass.prototype));

            //// extend the class
            //lang.extend(myClass, { "extendedProp": "extendedValue" });
            //console.log("the class (modified with lang.extend):", json.stringify(myClass.prototype));

            //var t = new myClass();
            //// add new properties to the instance of our class
            //lang.mixin(t, { "myProp": "myValue" });
            //console.log("the instance (modified with lang.mixin):", json.stringify(t));

            //5.getObject("object.attr",boollen):获取对象的属性,当设为true时,如果为找到属性就创建..
            on(dom.byId("getObject"), "click", function () {
                var foo = { bar: "some value" };

                //var v = lang.getObject("foo.baz", true);

                var v = lang.getObject("bar", false, foo);
                var v2 = lang.getObject("baz", true, foo);
                var v3 = lang.getObject('bar', true, foo);
                var v4 = lang.getObject("baz", false, foo);
                console.log(v);
                console.log(v2);
                console.log(v3);
                console.log(v4);



            });

            //6.lang.hitch(this,processEvent);//保持执行方法所需的最初上下文
            on(dom.byId("hitch"), "click", function () {
                var myObj = {
                    foo: "bar",
                    method: function (arg) {
                        console.log(this.foo);
                    },
                    method2: function (arg) {
                        console.log(arg + " " + this.foo);
                    }
                };
                var func = lang.hitch(myObj, "method");
                var func2 = lang.hitch(myObj, "method2", "origin:最初的");

                func();
                func2();
            });

            //7.lang.partial(eventHandler,arguments);//向方法中传递参数
            var myClick = function (presetValue, event) {
                domConstruct.place("<p>" + presetValue + "</p>", "appendLocation");
                domConstruct.place("<br />", "appendLocation");
            };

            on(dom.byId("partial"), "click", lang.partial(myClick, 'thi is preset text!'));

            //8.lang.replace(string(key),{key:value});
            on(dom.byId("replace"), "click", function () {
                //with Directory
                //dom.byId("output").innerHTML = lang.replace("Hello,{name.first} {name.last} AKA {nick}!", {
                //    name: {
                //        first: "Robert",
                //        middle: "X",
                //        last:"Cringely"
                //    },
                //    nick:'bobobo'
                //})

                //with Array
                //dom.byId("output").innerHTML = lang.replace(
                //    "Hello, {0} {2} AKA {3}!",
                //    ["Robert", "X", "Cringely", "Bob"]
                //    );
                // helper function

                //with function
                //function sum(a) {
                //    var t = 0;
                //    array.forEach(a, function (x) { t += x; });
                //    return t;
                //}

                //dom.byId("output").innerHTML = lang.replace(
                //  "{count} payments averaging {avg} USD per payment.",
                //  lang.hitch(
                //    { payments: [11, 16, 12] },
                //    function (_, key) {
                //        switch (key) {
                //            case "count": return this.payments.length;
                //            case "min": return Math.min.apply(Math, this.payments);
                //            case "max": return Math.max.apply(Math, this.payments);
                //            case "sum": return sum(this.payments);
                //            case "avg": return sum(this.payments) / this.payments.length;
                //        }
                //    }
                //  )
                //);

                dom.byId("output").innerHTML = lang.replace(
                    "Hello, %[0] %[2] AKA %[3]!",
                    ["Robert", "X", "Cringely", "Bob"],
                    /\%\[([^\]]+)\]/g
                  );


            });

            //9.lang.trim()
            //function show(str) {
            //    return "|" + lang.trim(str) + "|";
            //}
            //dom.byId("output1").innerHTML = show("   one");
            //dom.byId("output2").innerHTML = show("two ");
            //dom.byId("output3").innerHTML = show("   three ");
            //dom.byId("output4").innerHTML = show("\tfour\r\n");
            //dom.byId("output5").innerHTML = show("\f\n\r\t\vF I V E\f\n\r\t\v");
        });
    </script>
</head>
<body>
    <h3 class="someNode">Shallow Copy:浅复制</h3>
    <button id="clone">lang.clone()方法</button>
    <button id="delegate">lang.delegate()方法</button>
    <button id="exists">lang.exists()方法</button>
    <button id="extend">lang.extend()方法</button>
    <div data-dojo-type="dijit/TitlePane" data-dojo-props="randomAttribute:'newValue'">directly:立刻,马上</div>
    <button id="getObject">lang.getObject()方法</button>
    <button id="hitch">lang.hitch()方法</button>
    <button id="partial">lang.partial()方法</button>
    <div id="appendLocation"></div>
    <button id="replace">lang.replace()方法</button>
    <p id="output"></p>
</body>
</html>

  

posted on 2016-12-14 10:52  努力的活着_在人间  阅读(135)  评论(0)    收藏  举报

导航