官方地址: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. django admin页面样式丢失问题

    wamp 配置django admin页面样式丢失问题 第一种方法:在apache配置文件httpd.conf中加入如下代码:Alias /static "E:\Python27\Lib\s ...

  2. EasyMvc入门教程-基本控件说明(4)折叠面板

    折叠面板一般出现在管理后台,大家用的OutLook里就是用了折叠面板,样子大概是这样的: 把其中的内容替换成图标按钮,是不是就是我们常见的样子了?:)那么如何实现呢?请看例子: @{ var data ...

  3. 简单便捷的纯PHP网盘程序 Veno File Manager 2.6.3(VFM2)

    体验过很多国外网盘程序,例如:Owncloud.Bedrive.YetiShare.XFilesharing.uCloud.Cloudshare 等等,诸如此类,VFM2与这些臃肿的商用或非商用来的程 ...

  4. JAVA实现EXCEL公式专题(四)——字符串函数

    直接上代码: /** * 项目名称: * 文件说明: ExCEL公式类型:字符串公式 * 主要特点: * 版本:1.0 * 制作人:刘晨曦 * 创建时间:2013-12-3 **/ package E ...

  5. sql语句中几个需要注意的点

    1.在写join语句的时候,一定要注意不要漏了on语句,例如: Select * from Student inner join Sc on Student.Sno=Sc.sno 2.having语句 ...

  6. android图片素材參考

    hpi:通常是大图像素是:480x800   (640*960)宽比长大致为0.6左右      一般240dpi.    小图的像素依据实际来. xhdi:一般大图像素是: 640x1136 (72 ...

  7. winform 下载文件显示进度和百分比

    /// <summary> /// 下载完成 /// </summary> private void DownloadFileCompleted() { IsComlate = ...

  8. HDU 3461 Code Lock(并查集的应用+高速幂)

    * 65536kb,仅仅能开到1.76*10^7大小的数组. 而题目的N取到了10^7.我開始做的时候没注意,用了按秩合并,uset+rank达到了2*10^7所以MLE,所以貌似不能用按秩合并. 事 ...

  9. kotlin 语言入门指南(一)--基础语法

    基于官网的Getting Start的基础语法教程部分,一共三节,这篇是第一节,翻译如下: 基础语法 定义一个包 包的声明必须放在文件头部: package my.demo import java.u ...

  10. Nginx与Apache的Rewrite规则的区别

    一.Nginx Rewrite规则相关指令 Nginx Rewrite规则相关指令有if.rewrite.set.return.break等,其中rewrite是最关键的指令.一个简单的Nginx R ...