如何使用 jquery 扩展 javascript 函数对象以添加新属性?
How to extend javascript Function object using jquery to add new attributes?
我有 javascript 个函数对象 EmployeeClass
。此对象的字段由硬编码属性映射。
在 jqgrid jqGridAddEditAfterSubmit
上绑定了一个事件。在这个函数中,我能够读取 json 字符串对象,表示一行 updated/added。
json 字符串表示如下:
{
"Id":"xxx",
"FirstName":"Mr. B",
"LastName":"Ross",
...
}
函数对象定义:
//EMPLOYEE
function EmployeeClass(empJson){
this.Id = empJson.Id;
this.FirstName = empJson.FirstName;
this.LastName = empJson.LastName;
...
...
}
绑定函数中使用的代码示例如下:
$("gridid").bind("jqGridAddEditAfterSubmit", function (e, rowid, event) {
var rowData = ...
..
..
//construct object for server
var oObject = new EmployeeClass(rowData);
//CALL SERVER SIDE API for store
SERVERREMOTE.call(oOject,'saveEmployee',...);
});
问题
如果没有动态添加字段,以上代码效果很好。意思是,服务器端可以添加自定义字段,这些字段会动态添加到 jqgrid 中,jqgrid 可以很好地管理 display/edit/add 功能。但是,我现在的问题是,如何将我的 EmployeeClass
对象提交到具有动态添加属性的服务器?我需要一些如何在我的绑定函数 jqGridAddEditAfterSubmit
中扩展我的 EmployeeClass
以便我捕获 jqgrid 传递的所有属性并转换为 EmployeeClass
希望这个场景能解释我的问题。这都是关于在 运行 时间动态扩展 javascript 函数对象。
回答
based on new fields present into JSON string, I need to add
corresponding fields into my function object
使用类似 var keys = Object.keys(empJson)
的方法从 JSON 数据中获取键作为符号(字符串)数组。
然后使用循环检查您的函数是否使用 .hasOwnProperty(keys[x])
的那些键。
可以使用 emp[keys[x]] = empJson[keys[x]]
之类的内容轻松添加缺少的属性,其中 x 是新键的索引。请注意,keys[x] 只是一个字符串。
我有 javascript 个函数对象 EmployeeClass
。此对象的字段由硬编码属性映射。
在 jqgrid jqGridAddEditAfterSubmit
上绑定了一个事件。在这个函数中,我能够读取 json 字符串对象,表示一行 updated/added。
json 字符串表示如下:
{
"Id":"xxx",
"FirstName":"Mr. B",
"LastName":"Ross",
...
}
函数对象定义:
//EMPLOYEE
function EmployeeClass(empJson){
this.Id = empJson.Id;
this.FirstName = empJson.FirstName;
this.LastName = empJson.LastName;
...
...
}
绑定函数中使用的代码示例如下:
$("gridid").bind("jqGridAddEditAfterSubmit", function (e, rowid, event) {
var rowData = ...
..
..
//construct object for server
var oObject = new EmployeeClass(rowData);
//CALL SERVER SIDE API for store
SERVERREMOTE.call(oOject,'saveEmployee',...);
});
问题
如果没有动态添加字段,以上代码效果很好。意思是,服务器端可以添加自定义字段,这些字段会动态添加到 jqgrid 中,jqgrid 可以很好地管理 display/edit/add 功能。但是,我现在的问题是,如何将我的 EmployeeClass
对象提交到具有动态添加属性的服务器?我需要一些如何在我的绑定函数 jqGridAddEditAfterSubmit
中扩展我的 EmployeeClass
以便我捕获 jqgrid 传递的所有属性并转换为 EmployeeClass
希望这个场景能解释我的问题。这都是关于在 运行 时间动态扩展 javascript 函数对象。
回答
based on new fields present into JSON string, I need to add corresponding fields into my function object
使用类似 var keys = Object.keys(empJson)
的方法从 JSON 数据中获取键作为符号(字符串)数组。
然后使用循环检查您的函数是否使用 .hasOwnProperty(keys[x])
的那些键。
可以使用 emp[keys[x]] = empJson[keys[x]]
之类的内容轻松添加缺少的属性,其中 x 是新键的索引。请注意,keys[x] 只是一个字符串。