我需要在构造函数中获取所有函数名称,排除那些使用this
分配的函数:
var MyObject = function (arg1, arg2) {
this.arg1 = arg1;
this.arg2 = arg2;
// Get all functions, i.e. 'foo', excluding 'arg1' and 'arg2'
};
MyObject.prototype.foo = function() {}
我使用过Underscore.js,没有运气。假设实际参数都是函数:
var MyObject = function (arg1, arg2) {
this.arg1 = arg1;
this.arg2 = arg2;
// Array of object function names, that is 'foo', 'arg1' and 'arg2'
var functions = _.functions(this);
// Loop over function names
_.each(functions, function (name) {}, this) {
// Function arguments contain this.name? Strict check ===
if(_.contains(arguments, this.name) {
functions = _.without(functions, name); // Remove this function
}
}
};
MyObject.prototype.foo = function() {}
答案 0 :(得分:2)
您要求原型定义的所有功能:
_.functions(MyObject.prototype);
答案 1 :(得分:1)
this
上的函数是您在构造函数中分配的函数以及从原型继承的函数。所以你需要做的是查询原型的功能:
var funcs = _functions(Object.getPrototypeOf(this));
以上适用于所有相当现代的浏览器。对于早期的IE,你可以回归到非标准的
var funcs = _functions(this.__proto__);