将jQueryajax回调参数定义为现有对象类型
Defining a jQuery ajax callback parameter as an existing object type
我承认这个问题已经到了我对JavaScript&jQuery,可能有一种更合适的方式来陈述我的问题(这将有助于找到现有的解决方案),但如果你能忍受我,这就是我想要的。
我已经定义了一个现有的对象类。我正在使用getJSON进行jQueryajax调用,我希望我的回调参数(它是一个对象)被归类为我的自定义对象,这样我就可以从中访问该类的方法。
所以我有一些对象类
function Boo() {
this.param1;
this.param2;
this.yah = function() {
...
}
}
然后我有其他类似的东西
$.getJSON(url,function(new_instance) {
//from my php source this passed object is already loaded with param1, param2...
alert(new_instance.param1); //no probs
//but i want to be able to then call
new_instance.yah();
});
换句话说,我希望new_instance被认为是Boo()的一个实例。我知道在ActionScript这样的东西中,你必须对传入的参数进行分类,正是因为这个原因,不知道我在JS中有多大的灵活性。
我可能想过用一个中间函数来接收传入的对象并创建/填充Boo()的新实例,但不确定是否有更聪明的方法。
非常感谢!!
不要在构造函数中定义方法,否则每次成本构建者都会一遍又一遍地定义它们被调用。将它们移到原型:
Boo.prototype = {
yah: function() {
},
bah: function() {
}
...
};
一个小助手功能:
function coerceTo( proto, values ) {
var r = Object.create( proto );
for( var key in values ) {
r[key] = values[key];
}
return r;
}
根据浏览器的不同,Object.create
可能不可用,因此:
if (!Object.create) {
Object.create = function (o) {
if (arguments.length > 1) {
throw new Error('Object.create implementation only accepts the first parameter.');
}
function F() {}
F.prototype = o;
return new F();
};
}
用法:
new_instance = coerceTo( Boo.prototype, new_instance );
new_instance instanceof Boo //true
new_instance.yah();
您可以做什么:
$.getJSON(url,function(newObjData) {
var newObj = $.extend(new Boo(), newObjData);
newObj.yah();
});
还要考虑将Boo
方法移动到对象prototype
,这样就不会为每个Boo
实例重新创建方法:
var Boo = function() {
this.param1;
this.param2;
}
Boo.prototype.yah = function() {
console.log(this.param1);
}
相关文章:
- 字符串对象类型或基元类型也是如此
- 如何在dojo中查询对象类型
- 对象类型scrollTo
- 在 Javascript 中创建全局变量时是否需要指定对象类型
- JavaScript:创建新对象类型的方法
- 如何获取对象类型
- FormData()只发送对象类型的多文件
- 获取对象类型
- 依赖对象类型检查Javascript似乎是多余的
- 访问javascript中对象类型的数组成员
- 比较对象类型时是否需要第三个=
- 如何在 Google 闭包编译器中指定对象类型的@param @return
- 窗口对象通过对象类型测试,但 hasOwnProperty 导致错误
- Javascript 空对象类型
- 何时有时将对象类型定义为将实例绑定方法镜像为构造函数上的静态实用程序函数很有用
- 在下拉列表中使用多个对象类型为数据网格提供筛选
- 为什么 String.prototype 中的“this”指的是对象类型,而不是字符串类型
- 自定义对象/类型 Javascript
- 在 Javascript 中获取对象类型的名称
- 两种 JavaScript 对象类型之间的差异