javascript - `apply` 没有 't work for function as object' 的属性

标签 javascript function object properties apply

根据 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/

相关文章:

javascript - React ajax 获取响应未定义

c - 我声明的结构中缺少什么

javascript - 在 Qualtrics 中使用平均函数

c++ - 使用基于数组和范围的 For 循环替换一些基本代码行

javascript - 我如何处理 jQuery.Ajax 中的时间响应(数据类型 : JSON)?

javascript - 如何在自定义处理的输入字段中输入数据?

Javascript if/else onclick?

php - 函数打印但不适用于数组

JavaScript:编写函数,将一个对象和一个函数数组作为输入参数并返回一个数组

c++ - C++中,为什么返回不同对象私有(private)变量的指针会导致段错误?