extjs 记录一下
1.如何动态地给一个对象添加属性?
<script>
var objectX = {};
name = "sex";
value= "male";
eval("objectX." + name + "=value");
alert(objectX.sex);
</script>
var objectX = {};
name = "sex";
value= "male";
objectX[name]=value;
alert(objectX.sex);
根据最初设计,系统提供一个StoreParams类,要传输的内容全部通过这个类的属性增加内容,然后再转换成json传输到服务器,为了解决能动态生成属性,发现第二种方法很好。
----------------------------------------------------------------------------------------------------------------------------------------------
2.获取页面中所有输入内容:
function getInputsObject() {
var items = Ext.ComponentMgr.all.items;
var obj = new function(){};
// obj.czrkssssxq = 'aa';
for ( var i = 0; i < items.length; i++) {
if ((items[i].getValue) && (items[i].getValue() != '')
&& (items[i].getValue() != undefined)) {
obj[items[i].getName()] = items[i].getValue();
}
}
return obj;
}
----------------------------------------------------------------------------------------------------------------------------------------------
3.JS的闭包
function makeIncrementer(){
var n=0;
function increment(){
return ++n;
}
//n++;
return increment;
}
var inc1 = makeIncrementer();
alert(inc1());
alert(inc1());
对于闭包的理解:
1.闭包其实就是函数的返回结果可以是函数(increment)。
2.这个返回的函数(increment)中存了一些被函数(makeIncrementer)实例化的变量(n),这些变量(n)在调用过程中(inc1 )不会被回收,除非结束调用(inc1被回收)。
----------------------------------------------------------------------------------------------------------------------------------------------
4.constructor
JS可以通过constructor判断一个变量的类型
var x = new String();
if (x.constructor == String){
alert('test');
}
?可是如何知道一个变量是从什么类型继承的呢?
----------------------------------------------------------------------------------------------------------------------------------------------
5.关于store
store有一个方法:getModifiedRecords()可以得到所有被修改过的记录(包括新增记录)
可是如果得到所有被修改、删除、以及新增的记录呢:
可以参考store的save方法
if (this.removed.length) {
this.doTransaction("destroy", this.removed);
}
这个是得到所有删除的记录
var phantoms = [];
for (var i = rs.length-1; i >= 0; i--) {
if (rs[i].phantom === true) {
var rec = rs.splice(i, 1).shift();
if (rec.isValid()) {
phantoms.push(rec);
}
} else if (!rs[i].isValid()) { // <-- while we're here, splice-off any !isValid real records
rs.splice(i,1);
}
}
// If we have valid phantoms, create them...
if (phantoms.length) {
this.doTransaction('create', phantoms);
}
// UPDATE: And finally, if we're still here after splicing-off phantoms and !isValid real records, update the rest...
if (rs.length) {
this.doTransaction('update', rs);
}