1.文本节点的处理
var textNode=document.createTextNode(data)
这儿的data可以是带标签的string类型数据
Node.nodeType==3判断是文本节点时
可以通过var text=Node.text || Node.textContent //前IE 后FF获取文本节点的文本
在option集合中 通过selectObject.option[index].text获取选项的文本
2 RegExp的特殊使用
2.1通过传入的字符串创建正则式:
把传入的字符串转化为可用的正则式,作为RegExp构造方法的参数
escapeRe : function(s) {
return s.replace(/([-.*+?^${}()|[\]\/\\])/g, "\\$1");
},
这儿replace的第二个参数 replacement 是\\$1表示仅仅匹配第一个子匹配同时返回值带有一个\ 如:
"John Smith".replace(/(\w+)\s(\w+)/, "\\$1"); 返回的是Jorn但为什么没有返回\Jorn,还不清楚
2.2 Extjs中判断selector的类型
var reg=/^(#)?([\w-\*]+)/;
var str="div>a";
var result=str.match(reg);
for (var i=0;result[i];i++){
alert(result[i]);
}
这儿则正式的涵义是 是否有一个或0个以#开头的随后是一个或多个 单词或-或*的匹配
这儿的结果是div 如果str="#div>a";结果是#div # div
2.3 匹配行样式表
nthRe = /(\d*)n\+?(\d*)/ d*匹配0个或多个数字 \+?表示0个或一个+
2.4 ?:pattern匹配
官方解释:
(?:pattern)匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有 用。 如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。
Extjs中此句 /^(?:scope|delay)$/
那么 /^(?:scope|delay)$/ 和 /^(scope|delay)$/ 相比,后者的括号可以获取子匹配,而前者不获取子匹配
2.5 String.replace(regexp,replacement)当第二个参数为fn 实例
function regReplace(){
var str="我是猪,我是猪";
str.replace(/我/g,function(){
for(var i=0;i<arguments.length;i++){
alert(arguments[i])
}
return "你";
});
}
regReplace()
这儿的因为使用g进行全局匹配,所以function会多次调用,每次调用会传递三个参数,1匹配的字符 2匹配字符的index 3进行匹配的字符串
此方法在Extjs中的使用
Ext.onReady(function() {
var s = String.format('<div>姓名:{0}<br/>年龄:{1}</div>',"大漠穷秋","26");
document.body.innerHTML=s;
});
Ext扩展的String中的format方法
format : function(format){
var args = Ext.toArray(arguments, 1);
return format.replace(/\{(\d+)\}/g, function(m, i){
return args[i];
});
}
3 使用new 后function的类型为object ,没有new 时是function,所以通过判断js对象是否实例化
4内置的原型对象,在使用new 实例化后 指向var xx=function(){}xx的原型对象,所以通过prototype添加方法时,只有实例化才能引用prototype中的方法
5.js中component的bubble和capture 使用bubble和capture都必须在supercomponent上设置,才回产生bubble和capture的效果,并且只针对diretct subcomponent才会产生效果
6.js中排序的实现
在Array原生函数中有一个sort(fn),fn中有两个参数 实例:
var fn=function(a,b){
if(typeof(a)=="string"){
return a.localeCompare(b);
}
return a-b;
};
var arr=['张三','李四','王二','麻子'];
arr.sort(fn);
alert(arr);
在Extjs中ArrayStore中filterBy(fn,scope)的实现类似,在实现上可以参考java的Comparitor接口的实现