根据 JavaScript Patterns book (第 79 页),这应该有效:
var ob = {
fn: function foo(m) {alert(m);}
};
fn.apply(ob,['m']);
它不起作用。
fn is not defined
错误抛出。
这 2 个工作正常:
ob.fn.apply(ob,['m']);
和
ob.fn.apply(null,['m']);
为什么 fn.apply(ob,['m'])
不起作用?无法获取。
最佳答案
fn
不起作用,因为它不是范围内的变量。如果定义了 window.fn
,或者在别处定义了 var fn
,那么您将能够以 fn.apply
的形式访问它。因为这些都没有定义,所以您需要使用对象上函数的完整路径:
ob.fn.apply(...);
如果您想要 fn 被定义,您可以简单地设置它:
var ob,
fn;
ob = {
fn:function(){...}
};
fn = ob.fn;
fn.apply(ob, ...);
关于javascript - `apply` 没有 't work for function as object' 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8897444/