javascript独特(?)函数编写

时间:2011-10-13 20:43:36

标签: function javascript

很多时候我可以看到这样的函数:

name : function(){ ... }

我有几个关于此的功能:

  1. 这个函数与普通(?)函数的区别是什么
  2. 这种功能叫什么?
  3. 我找不到任何关于此类功能的信息,教程会有所帮助。

6 个答案:

答案 0 :(得分:3)

格式为

的函数
name: function() { ... }

是对象文字中的函数。

obj = {
  myfunction: function() { ... }
}

可以通过obj.myfunction();

访问

答案 1 :(得分:1)

它被称为anonymous function

它与正常功能不同,因为:

  1. 这不是全球性的
  2. 可以访问外部作用域中的变量
  3. 调用一个就像正常一样:

    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(){ ... }};
  1. 它是一个物体的一部分。在这种情况下,它属于对象myobject
  2. 要调用此函数,您必须编写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配置中看到了这种用法,其中选项列表作为哈希传递,其中一些具有匿名函数。