如何在一行中的对象上调用匿名javascript函数?
我正在学习javascript匿名函数和作用域,并试图理解一些东西,但有点卡住了 我有以下三项职能:如何在一行中的对象上调用匿名javascript函数?,javascript,node.js,anonymous-function,Javascript,Node.js,Anonymous Function,我正在学习javascript匿名函数和作用域,并试图理解一些东西,但有点卡住了 我有以下三项职能: var funcA = function (value) { test = value; }; var funcB = function (value) { this.test = value; }; var funcC = function (func,value) { var item = {}; //single line invocation } 我
var funcA = function (value) {
test = value;
};
var funcB = function (value) {
this.test = value;
};
var funcC = function (func,value) {
var item = {};
//single line invocation
}
我正在尝试编写一行javascript(其中显示//单行调用
),这样下面两个调用的结果将不同,而不是产生相同的效果:
funcC(funcA, "set");
funcC(funcB, "set");
因为funcB引用的是this.test
,所以它将更改一个本地(实例)值,这样我们就可以使用funcC中的“item”对象。我尝试了一些匿名函数“东西”,比如:
然而,我在导致不同结果的声明方面没有任何运气。(即,当我使用节点(.js)运行代码时,test
和this.test
值都会改变)
对更好地理解这一点有任何帮助都会很好
提前感谢,
ParagonRG您必须使用来告诉它要处理的实例
funcB.call(item, value);
不能将匿名函数用作对象属性。你想做什么
var item = {"f": func};
item.f(value);
// item.test == value now
对吧??JavaScript实现这一点的方式是:
您还可以对匿名函数表达式使用call
:
(function(val){ this.test = val; }).call(item, value);
// yet this equivalent looks much cleaner:
item.test = value;
func.call(item, value);
// with the difference that item has no "f" property here
(function(val){ this.test = val; }).call(item, value);
// yet this equivalent looks much cleaner:
item.test = value;