extjs 记录一下

本文介绍了JavaScript中动态给对象添加属性的方法,并演示了如何获取页面上的所有输入内容。此外,还探讨了JavaScript闭包的概念及其工作原理,以及如何判断变量类型和管理Store中的记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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/archive/2009/09/25/1573795.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值