Javascript 向对象添加自定义函数
我想在创建对象后添加新函数。我试着写一些代码,但不正确。 //Javascript 向对象添加自定义函数,javascript,oop,Javascript,Oop,我想在创建对象后添加新函数。我试着写一些代码,但不正确。 // 对不起,我的描述不清楚。我想在我创建一个对象之后,我可以为这个对象添加函数来做一些事情。希望有人能理解我的英语: 函数Adda,b{ var _self=这个; var a=a; var b=b; } Add.prototype.doAdd=函数{ var rs=这个.a+这个.b; 国际财务报告准则
对不起,我的描述不清楚。我想在我创建一个对象之后,我可以为这个对象添加函数来做一些事情。希望有人能理解我的英语: 函数Adda,b{ var _self=这个; var a=a; var b=b; } Add.prototype.doAdd=函数{ var rs=这个.a+这个.b; 国际财务报告准则<10{ 这是莱斯特汉坦; }否则{ 这是十余个; } }; Add.prototype.moreThanTen=函数回调{ ifcallback{ callback.callthis; } }; Add.prototype.lessThanTen=函数回调{ ifcallback{ callback.callthis; } }; var add=新的add; add.morethanten函数{ 控制台。超过十个日志; }; add.lessthanten函数{ console.loglessThanTen };
add.doAdd 分配回调的代码不是它的工作方式。它只是执行方法,而不是神奇地分配回调。回调需要传递到doAdd方法中,或者您需要以不同的方式分配回调。如果要向对象添加属性,请使用以下代码:
function Add(a,b){
this.a = a;
this.b = b;
}
如果要添加回调,请使用以下命令:
Add.prototype.addCallbacks(less, more) {
this.less = less;
this.more = more;
};
Add.prototype.moreThanTen = function(callback) {
if(this.more){
this.more.call(this);
}
};
Add.prototype.lessThanTen = function(callback) {
if(this.less){
this.less.call(this);
}
};
然后
var add = new Add();
add.addCallbacks(function(){
console.log("lessThanTen")
}, function(){
console.log("moreThanTen");
});
你有几个问题。首先,使用var将声明一个局部变量,因此在该函数之外无法访问它。如果要创建成员变量,请使用此选项。相反,正如jcubic所指出的那样
function Add(a, b) {
this.a = a;
this.b = b;
}
其次,您没有正确添加回调。您的代码正在立即执行回调,但我认为您真正想要做的是保存回调并稍后执行
function Add(a, b) {
this.a = a;
this.b = b;
this.moreThanTenCallbacks = [];
this.lessThanTenCallbacks = [];
}
Add.prototype.moreThanTen = function(callback) {
moreThanTenCallbacks.push(callback);
};
Add.prototype.lessThanTen = function(callback) {
lessThanTenCallbacks.push(callback);
};
Add.prototype.executeCallback = function(callbacks) {
for (var i = 0; i < callbacks.length; ++i) {
if (callback) {
callback();
}
}
};
Add.prototype.doAdd = function() {
var rs = this.a + this.b;
if (rs < 10) {
this.executeCallback(this.lessThanTenCallbacks);
} else {
// NOTE: this will execute moreThanTen callbacks even if the result equals 10!
// Are you sure that is what you want?
this.executeCallback(this.moreThanTenCallbacks);
}
};
你想在代码中做什么?但它不正确并不能很好地描述问题。请务必在问题中包含代码,并编辑问题以解释什么不起作用以及为什么不起作用,即,您预期会发生什么。我编辑了代码,因此它位于它所属的帖子中。我希望在创建对象后,我可以为该对象添加函数以执行某些操作。