指向对象函数的Javascript函数指针错误抛出错误:TypeError:can';t将未定义的转换为对象

指向对象函数的Javascript函数指针错误抛出错误:TypeError:can';t将未定义的转换为对象,javascript,Javascript,我现在开始阅读javascript,我想知道为什么下面的代码会引发错误: a = [0,1,2,3]; x = a.pop; x(); (抛出错误:TypeError:无法将未定义的转换为对象) 虽然以下代码工作正常: x = console.log x("hello"); 这两者有什么区别?还有,我有什么方法可以将对a.pop的可调用引用存储在变量中吗?关于@Teemu所说的,没有什么可以补充的了,他回答得更快了,但这里有一个片段,您可以扩展他的评论,下面的片段使用函数添加一个上下文,其中

我现在开始阅读javascript,我想知道为什么下面的代码会引发错误:

a = [0,1,2,3];
x = a.pop;
x();
(抛出错误:
TypeError:无法将未定义的转换为对象

虽然以下代码工作正常:

x = console.log
x("hello");

这两者有什么区别?还有,我有什么方法可以将对
a.pop
的可调用引用存储在变量中吗?

关于@Teemu所说的,没有什么可以补充的了,他回答得更快了,但这里有一个片段,您可以扩展他的评论,下面的片段使用函数添加一个上下文,其中
.pop()
应该应用于,也可以使用
.apply()

设a=[0,1,2,3];
常数x=a.pop;
x、 电话(a);
控制台日志(a);
x、 适用(a);

控制台日志(a)
关于@Teemu所说的,没有什么需要补充的了,他回答得更快了,但这里有一个片段,您可以在他的评论上展开,下面的片段使用函数添加一个上下文,其中应应用
.pop()
,也可以使用
.apply()

设a=[0,1,2,3];
常数x=a.pop;
x、 电话(a);
控制台日志(a);
x、 适用(a);

控制台日志(a)
x
是对
a.pop
方法的引用。当调用数组的
pop
方法(数组原型中的函数对象)时,它需要一个对象作为上下文,但是当您在没有上下文的情况下调用该方法时,会触发错误
console.log
不需要上下文,这就是它“单独”工作的原因。出于好奇:是否有任何方法提供上下文,例如so
x.pop(a)
(这不起作用,但是否存在类似情况)?
x
是对
a.pop
方法的引用。当调用数组的
pop
方法(数组原型中的函数对象)时,它需要一个对象作为上下文,但是当您在没有上下文的情况下调用该方法时,会触发错误
console.log
不需要上下文,这就是它“单独”工作的原因。出于好奇:是否有任何方法提供上下文,例如so
x.pop(a)(这不起作用,但是否存在类似情况)?