动态添加方法到对象
Adding Methods on the Fly to Object
我希望这可以在Javascript中完成。
我有这样的东西:
有这样的东西:
var MYOBJECT = {
method1: function(){//some cool},
addMethodToObject: function (a_new_method){
//whats need to be here to add the
method passed in "a_new_method" to MYOBJECT ?
}
}
这个想法是调用:
MYOBJECT.addMethodToObject(function otherMethod(needThis){return needThis;});
现在 MYOBJECT 将该方法作为新方法传递,我可以做这样的事情:
MYOBJECT.otherMethod('say Hi');
将输出
"打个招呼"
提前谢谢。
我没有测试上面的答案,但所有这些都需要从内部更改对象。我需要一些东西而不从内部改变对象,所以我想出了这个解决方案:
首先创建对象并实例化,然后:
yourObject.yourMethodName = function(methodParam1, methodParam2) {
doWhatYouNeed;
};
然后执行如下:
yourObject.yourMethodName(methodParam1, methodParam2);
希望这有帮助。
就像其他人所说的那样,只需将匿名函数作为参数传递给您的addMethodToObject函数即可。
var MYOBJECT = {
method1: function(){ ; },
addMethodToObject: function (methodName, method) {
this[methodName] = method;
}
};
MYOBJECT.addMethodToObject("newMethod", function () {
console.log("testing 123");
});
MYOBJECT.newMethod();
试试这个:
function test() {
myObj = {
addMethod: function( method, name ) {
this[name] = method;
}
}
myObj.addMethod( function() { alert( "foo" ) }, "fooMethod" );
myObj.fooMethod();
}
见你;)
很简单,
你可以添加一个新方法,比如你添加一个新属性
obj["MethodName"] = function(){//ur Javascript statements}
您可以定义一个函数来执行此操作。但是,您不需要直接分配给MYOBJECT
:
MYOBJECT.otherMethod = otherMethod;
function otherMethod(needThis){
return needThis;
}
函数是 JavaScript 中的一类对象,您可以像传递对它们的任何其他对象的引用一样。您可以随时在 JavaScript 对象上创建新属性,只需为该属性赋值即可。
如果要为它定义一个函数,该函数必须同时接受该函数和您希望它在对象上具有的名称,如下所示:
var MYOBJECT = {
// ...
addMethodToObject: function(name, func) {
this[name] = func;
}
};
这是因为属性和函数没有理由必须具有相同的名称,并且没有标准方法可以从函数实例中获取函数的名称。(有几种非标准方法,但标准没有定义。
我在那里使用的语法可能不熟悉。在 JavaScript 中,有两种方法可以访问属性:带有文字名称的点表示法和带有字符串的括号表示法。示例是演示它最清晰的方法:
var obj = {};
obj.foo = 42; // Dotted notation with a literal name `foo`
obj["foo"] = 42; // Exactly the same thing, using bracketed notation and a string
var s = "foo";
obj[s] = 42; // Again the same, because the string doesn't have to be a literal
。这就是为什么this[name] = func;
有效; name
是要添加的属性的字符串名称。
相关文章:
- 从 javascript 中的对象方法返回一个对象
- 在Javascript中调用对象方法时不是函数类型错误
- Java Script将对象方法映射到数组中的对象
- 将数据从promise then方法传递到对象方法
- 设置显示后Flash对象方法不可用:无
- 通过引用Javascript中的另一个函数来传递对象方法
- Javascript库对象方法声明
- JavaScript对象范围-在对象方法中使用对象变量
- jQuery:如何使用文字对象方法中的方法来获取全局变量
- Javascript 对象方法不更新变量
- setInterval 只在对象方法上运行一次
- 对象方法中函数中的上下文
- 用JavaScript编写对象方法的最佳方式是什么
- 使用回调处理程序调用函数内部的父对象方法
- 从Javascript中的对象方法中访问全局变量
- 将此(对象)传递到一个对象方法嵌套方法中
- 为什么我得到“;不是函数错误”;对于我的对象方法
- 带有回调的Javascript对象方法中的递归
- 更正Node.js异步管道中的对象方法调用
- 如何在对象方法上调用requestAnimFrame