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);
}

这个是得到所有新增和修改的记录
原文地址:https://www.cnblogs.com/barryhong/p/1573795.html