标签:style blog http color strong art
官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/_base/lang.html#dojo-base-lang
应用加载声明:
require(["dojo/_base/lang"], function(lang){ // lang now contains the module features });
clone()
克隆任何对象或者元素节点,返回:一个新的对象。
require(["dojo/_base/lang"], function(lang){ // clone an object var obj = { a:"b", c:"d" }; var thing = lang.clone(obj); // clone an array var newarray = lang.clone(["a", "b", "c"]); });
delegate()
返回值:委托的新对象。
require(["dojo/_base/lang", function(lang){ var anOldObject = { bar: "baz" }; var myNewObject = lang.delegate(anOldObject, { thud: "xyzzy"}); myNewObject.bar == "baz"; // delegated to anOldObject anOldObject.thud == undefined; // by definition myNewObject.thud == "xyzzy"; // mixed in from props anOldObject.bar = "thonk"; myNewObject.bar == "thonk"; // still delegated to anOldObject‘s bar });
exists()
返回值:布尔类型。检查用点隔开的字符串的路径的所有对象是否存在,例如:“A.B.C”。第二个参数可选。
require(["dojo/_base/lang", "dijit/dijit"], function(lang, dijit){ 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"); } });
extend()
返回值:返回扩展的类。功能和mixin类似。
require(["dojo/_base/lang", "dijit/TitlePane"], function(lang, TitlePane){ lang.extend(TitlePane, { randomAttribute:"value" }); });
getObject()
返回值:以圆点分隔的字符串的对象的属性值。有第二个布尔类型的参数,可选,默认是false。第三个可选参数,是上下文,默认是global。
require(["dojo/_base/lang"], require(lang){ // define an object (intentionally global to demonstrate) foo = { bar: "some value" }; lang.getObject("foo.bar"); // returns "some value" });
第二个参数,给定是true,将会在属性不存在的情况下,创建该属性。
require(["dojo/_base/lang"], function(lang){ // define an object (intetionally global to demonstrate) foo = { bar: "some value" }; // get the "foo.baz" property, create it if it doesn‘t exist lang.getObject("foo.baz", true); // returns foo.baz - an empty object {} /* foo == { bar: "some value", baz: {} } */ });
mixin()
返回值:合并2个对象而成的新对象。合并从右向左,并重写左边对象。
require(["dojo/_base/lang"], function(lang){ var a = { b: "c", d: "e" }; lang.mixin(a, { d: "f", g: "h" }); console.log(a); // b: c, d: f, g: h });
extend()和mixin() 的区别:
extend,主要用户类的扩展;mixin,主要用户对象的扩展
require(["dojo/_base/lang", "dojo/json"], function(lang, json){ // define a class 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)); });
replace()
返回值:替换后的字符串。
字典模式
require(["dojo/_base/lang", "dojo/dom", "dojo/domReady!"], function(lang, dom){ dom.byId("output").innerHTML = lang.replace( "Hello, {name.first} {name.last} AKA {nick}!", { name: { first: "Robert", middle: "X", last: "Cringely" }, nick: "Bob" } ); });
数组模式:
require(["dojo/_base/lang", "dojo/dom", "dojo/domReady!"], function(lang, dom){ dom.byId("output").innerHTML = lang.replace( "Hello, {0} {2} AKA {3}!", ["Robert", "X", "Cringely", "Bob"] ); }); <p id="output"></p>
方法模式:。最后还有自定义模式。
require(["dojo/_base/array", "dojo/_base/lang", "dojo/dom", "dojo/domReady!"], function(array, lang, dom){ // helper 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; } } ) ); }); <p id="output"></p>
setObject()
给由点分隔的字符串的属性赋值。
//之前的做法 // ensure that intermediate objects are available if(!obj["parent"]){ obj.parent ={}; } if(!obj.parent["child"]){ obj.parent.child={}; } // now we can safely set the property obj.parent.child.prop = "some value";
//现在 require(["dojo/_base/lang"], function(lang){ lang.setObject("parent.child.prop", "some value", obj); });
trim()
清除字符串2端的空格。
require(["dojo/dom", "dojo/_base/lang", "dojo/domReady!"], function(dom, lang){ 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"); }); <p id="output1"></p> <p id="output2"></p> <p id="output3"></p> <p id="output4"></p> <p id="output5"></p>
hitch()
返回值:一个要执行的方法,附带了一个上下文(context)。
require(["dojo/_base/lang"], function(lang){ var myObj = { foo: "bar" }; var func = lang.hitch(myObj, function(){ console.log(this.foo); }); func(); });
partial()
和hitch()类似,返回值:方法。区别:没有提供context,传参。
require(["dojo/_base/lang", "dojo/dom", "dojo/dom-construct", "dojo/on", "dojo/domReady!"], function(lang, dom, domConst, on){ var myClick = function(presetValue, event){ domConst.place("<p>" + presetValue + "</p>", "appendLocation"); domConst.place("<br />", "appendLocation"); }; on(dom.byId("myButton"), "click", lang.partial(myClick, "This is preset text!")); }); <button type="button" id="myButton">Click me to append in a preset value!</button> <div id="appendLocation"></div>
dojo 官方翻译 dojo/_base/lang 版本1.10,布布扣,bubuko.com
dojo 官方翻译 dojo/_base/lang 版本1.10
标签:style blog http color strong art
原文地址:http://www.cnblogs.com/tiandi/p/3829804.html