首页 > 代码库 > dojo 官方翻译 dojo/_base/lang 版本1.10
dojo 官方翻译 dojo/_base/lang 版本1.10
官方地址: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 availableif(!obj["parent"]){ obj.parent ={}; }if(!obj.parent["child"]){ obj.parent.child={}; }// now we can safely set the propertyobj.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>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。