Ext中类的定义:

var TestClass= new Ext.data.Record.create([{
    name: 'id',
    type: 'int',
    mapping: 'ID'
},{
    name: 'name',
    type: 'string',
    mapping: 'Name'
}]);

创建一条新记录:

var myObj = new TestClass({id : 3});


取对象的属性值:

alert(myObj.get('name')); // undefined
alert(myObj.get('noProperty')); // undefined


查看Ext.Record源码:

Ext.data.Record = function(data, id){
    this.id = (id || id === 0) ? id : ++Ext.data.Record.AUTO_ID;
    this.data = data;  // 注意1
};
Ext.data.Record.create = function(o){
    var f = Ext.extend(Ext.data.Record, {}); // 注意2
    var p = f.prototype;
    p.fields = new Ext.util.MixedCollection(false, function(field){
        return field.name;
    });
    for(var i = 0, len = o.length; i < len; i++){
        p.fields.add(new Ext.data.Field(o[i]));
    }
    f.getField = function(name){
        return p.fields.get(name);
    };
    return f; // 注意3
};


从源码可以看出,Record其实就是有id属性的Object。 Record.create就是创建一个Record的子类型。


再次查找源码,Record.get()方法:

get : function(name){
    return this.data[name];
},


相当于,如下方法:

var obj ={};
alert(obj.name); // undefined


综上,方法中判断Record类型参数,某个属性是否存在值的方法为:

if((typeof rec !== 'undefined') &&
   (rec !== null) &&
   (typeof rec.get('name') !== 'undefined')){
    // do something..
}