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 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的更多相关文章
- dojo 官方翻译 dojo/_base/array 版本1.10
官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/_base/array.html#dojo-base-array array模块dojo进行 ...
- dojo 官方翻译 dojo/aspect
官网地址:http://dojotoolkit.org/reference-guide/1.10/dojo/aspect.html after() 定义:after(target, methodNam ...
- dojo 官方翻译 dojo/domReady 版本1.10
官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/domReady.html#dojo-domready dom加载完成后,执行. requi ...
- dojo 官方翻译 dojo/json 版本1.10
官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/json.html#dojo-json require(["dojo/json&q ...
- dojo 官方翻译 dojo/string 版本1.10
官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/string.html#dojo-string require(["dojo/st ...
- dojo 官方翻译 dojo/Deferred
延迟,异步调用 官网地址:http://dojotoolkit.org/reference-guide/1.9/dojo/Deferred.html require(["dojo/Defer ...
- DOJO官方API翻译或解读-dojo/_base/lang --hitch()
hitch() hitch() 是一个函数,会在给定的上下中执行给定一个执行函数.hitch允许你去控制一个函数如何执行,往往在异步操作中起作用. 我们常常会写出这样的代码:(博主:这个代码意图在&q ...
- dojo/_base/lang源码分析
dojo/_base/lang模块是一个工具模块,但几乎用dojo开发的app都会用到这个模块.模块中的方法能够在某些开发场景中避免繁冗的代码,接下来我们一起看看这些工具函数的使用和原理(仅仅是原理的 ...
- DOJO官方API翻译或解读-dojo/store (自定制存储器)
dojo/store 是对已存数据的访问和存储的统一接口,dojo/store意图以一个简单.易于使用和扩展的API来,替代.集合和改善 dojo/data 和dojox/storage .基于HTM ...
随机推荐
- java.sql.Timestamp类型
如果想向数据库中插入日期时间的话,可以用java.sql.Timestamp类 一个与 java.util.Date类有关的瘦包装器 (thin wrapper),它允许 JDBC API 将该类标识 ...
- VS2010中 报错:error C2146、error C4430 原因一:缺少CvvImage类
今天用vs2010打开vs2008的一个工程,报了好多错: 1>e:\visual studio 2010\projects\imageprojects\morphology\morpholog ...
- python+tesseract验证码识别的一点小心得
由于公司需要,最近开始学习验证码的识别 我选用的是tesseract-ocr进行识别,据说以前是惠普公司开发的排名前三的,现在开源了.到目前为止已经出到3.0.2了 当然了,前期我们还是需要对验证码进 ...
- GLSL逐顶点光照[转]
转载:http://blog.csdn.net/hgl868/article/details/7872350 引言 在OpenGL中有三种类型的光:方向光(directional).点光(point) ...
- Linux下防火墙iptables用法规则详及其防火墙配置
转:http://www.linuxidc.com/Linux/2012-08/67952.htm iptables规则 规则--顾名思义就是规矩和原则,和现实生活中的事情是一样的,国有国法,家有家规 ...
- HTML5 Canvas 绘制六叶草
注意: context.arc(横坐标,纵坐标,弧半径,起始角度,终止角度,逆顺时针);这个函数挺难用,主要原因是最后参数和角度的关系.不管文档怎么说,按我的实际经验,逆顺时针=false时,是逆时针 ...
- 拿wordpress站的一个小技巧
记得09年时wp爆过一个重置管理口令的漏洞, 现在用法差不多, 也是我刚刚发现, 网上也没找到有讲述关于这个的. 前提:是在有注入点(注入点的话可以通过寻找插件漏洞获得.), 密码解不开, 无法out ...
- JS创建表单提交备份
//保存 function saveFT() { var data = { createDate: GetDateStr(0), name: $("#txtName").val() ...
- AndroidX86模拟器Genymotion的一些使用和另一款Andy模拟器
命令行启动虚拟机 当我们下载安装好,可以通过命令行运行指定名字模拟器 D:\ProgramFiles\Genymobile\Genymotion\player --vm-name "Sam ...
- 一个数组nums,其中任意两个值等于给定值target,返回这两个值在nums里的位置
package com.java.tencent; import java.lang.reflect.Array; import java.util.Arrays; import java.util. ...