很多时候我可以看到这样的函数:
name : function(){ ... }
我有几个关于此的功能:
我找不到任何关于此类功能的信息,教程会有所帮助。
答案 0 :(得分:3)
格式为
的函数name: function() { ... }
是对象文字中的函数。
obj = {
myfunction: function() { ... }
}
可以通过obj.myfunction();
访问答案 1 :(得分:1)
它被称为anonymous function。
它与正常功能不同,因为:
调用一个就像正常一样:
var a = function(input) {
alert(input);
};
a();
或者只是..
function(input) {
alert(input);
}();
访问外部范围:
var output = "something";
function() {
alert(output);
}();
它们经常被用作回调,你将一个函数传递给另一个函数,并且该函数调用你的函数。例如,这里有一些代码等待1秒然后弹出“完成等待!”:
setTimeout(function() {
alert("Done waiting!");
}, 1000);
答案 2 :(得分:1)
缺少一些代码。它应该是这样的:
var myobject = {name : function(){ ... }};
myobject
。myobject.name()
答案 3 :(得分:1)
这些被称为“函数表达式”,当这样定义时,函数内的“this”属性指向定义此函数的对象(即持有“name”属性的对象)。
做类似
的事情function name () {...}
称为函数声明,“this”属性指向全局对象。
答案 4 :(得分:0)
这是一个正常的功能。唯一的区别是它存储在某个地方,可能是一个普通的旧对象。
您可以在JavaScript中创建对象:
var blah = {}; // empty
或者像这样,存储键/值对:
var point = {x: 5, y: 22};
然后你可以这样做:
point.x; // is 5!
更容易看待写同样的事情是:
var point = {
x: 5,
y: 22
};
在那里你可以非常清楚地看到x被“映射”到5而y被“映射”到22。
在这种情况下,不是使值为“5”或“22”,而是值
var point = {
x: 5,
y: 22,
functionName: function() { ... }
};
然后你可以像这样使用那个对象:
point.x; // is 5!
point.functionName(); // calls the function!
很多时候,你会在JavaScript中看到这个:
var LibraryOfFunctions = {
functionA: function() { ... },
functionB: function() { ... },
functionC: function() { ... },
};
答案 5 :(得分:0)
前面没有名字的函数是匿名函数。您可以为变量分配匿名函数:
var myfunc = function {alert('hi')};
然后称之为:
myfunc();
或者它可以被定义为哈希的一部分:
var myhash = {} // empty hash
var myhash = {my_int: 5} //hash with a key and int value
var myhash = {myfunc: function() {alert('hi');}} //hash with key and function as a value
现在你可以喜欢它:
myhash.myfunc()
您在jQuery配置中看到了这种用法,其中选项列表作为哈希传递,其中一些具有匿名函数。