官方地址: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的更多相关文章

  1. dojo 官方翻译 dojo/_base/array 版本1.10

    官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/_base/array.html#dojo-base-array array模块dojo进行 ...

  2. dojo 官方翻译 dojo/aspect

    官网地址:http://dojotoolkit.org/reference-guide/1.10/dojo/aspect.html after() 定义:after(target, methodNam ...

  3. dojo 官方翻译 dojo/domReady 版本1.10

    官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/domReady.html#dojo-domready dom加载完成后,执行. requi ...

  4. dojo 官方翻译 dojo/json 版本1.10

    官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/json.html#dojo-json require(["dojo/json&q ...

  5. dojo 官方翻译 dojo/string 版本1.10

    官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/string.html#dojo-string require(["dojo/st ...

  6. dojo 官方翻译 dojo/Deferred

    延迟,异步调用 官网地址:http://dojotoolkit.org/reference-guide/1.9/dojo/Deferred.html require(["dojo/Defer ...

  7. DOJO官方API翻译或解读-dojo/_base/lang --hitch()

    hitch() hitch() 是一个函数,会在给定的上下中执行给定一个执行函数.hitch允许你去控制一个函数如何执行,往往在异步操作中起作用. 我们常常会写出这样的代码:(博主:这个代码意图在&q ...

  8. dojo/_base/lang源码分析

    dojo/_base/lang模块是一个工具模块,但几乎用dojo开发的app都会用到这个模块.模块中的方法能够在某些开发场景中避免繁冗的代码,接下来我们一起看看这些工具函数的使用和原理(仅仅是原理的 ...

  9. DOJO官方API翻译或解读-dojo/store (自定制存储器)

    dojo/store 是对已存数据的访问和存储的统一接口,dojo/store意图以一个简单.易于使用和扩展的API来,替代.集合和改善 dojo/data 和dojox/storage .基于HTM ...

随机推荐

  1. 报错: Access restriction: The type JPEGImageEncoder is not accessible due to restriction on required library

    报错: Access restriction:The type JPEGCodec is not accessible due to restriction on required library C ...

  2. code::blocks(版本号10.05) 配置opencv2.4.3

    (1)首先下载opencv2.4.3, 解压缩到D:下: (2)配置code::blocks, 详细操作例如以下: 第一步, 配置compiler, 操作步骤为Settings  -> Comp ...

  3. NSTimer使用不当引发的内存泄漏问题

    NSTimer可以用来执行一些定时任务,比较常用的方法就是: + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTar ...

  4. Robot framework 引入 Selenium2Library 类库:

    在用robotframework-selenium2library做web自动化测试时候,首先要将Selenium2Library导入到Test Suite中,在导入Selenium2Library时 ...

  5. Java开启/关闭tomcat服务器

    © 版权声明:本文为博主原创文章,转载请注明出处 通过java代码实现Tomcat的开启与关闭 1.项目结构 2.CallTomcat.java package com.calltomcat.test ...

  6. HTML5 手机网页制作笔记

    http://top.css88.com/archives/546 http://www.w3cfuns.com/blog-5470280-5406828.html 最近在卓手机网页,第一次入手.把要 ...

  7. cmake学习之-configure_file

    一.系统版本 cmake version: 3.5.2 系统版本: Ubuntun 16.04 cmake docment: 3.14.4 最后更新: 2019-05-30 二.指令说明 config ...

  8. python 使用微信远程控制电脑

    今天来分享一个"高大上"的技术--使用python编写一个能够用微信远程控制电脑的程序! 先来分析一下控制的详细流程: 我们使用微信给特定的邮箱发送一封邮件,当中包括了我们想要电脑 ...

  9. Maven上传本地jar

    1. 将Jar包安装到本地仓库 -- DgroupId和DartifactId构成了该jar包在pom.xml的坐标, 对应依赖的DgroupId和DartifactId    -- Dfile表示需 ...

  10. Android Calendar的学习与运用

    [java]mport java.text.DateFormat; import java.text.ParsePosition; import java.text.SimpleDateFormat; ...