【问题标题】:how to make a first-class object in javascript如何在javascript中制作一流的对象
【发布时间】:2026-02-06 17:25:01
【问题描述】:

在阅读了第一类对象后,我决定让我的新的第一类对象像一个函数,但使用另一个名称。我搜索并发现了很多关于 javascript 函数的东西。


我的研究结论

1) 每个函数都是一个对象,也可以被视为一个对象。

看这里的代码:

var myfunc3 = new Function(
                 "a", " return a + 1;");

来自页面this

据我所知,之前定义的任何函数都可以使用new 构造函数调用,即:

    var person = function(name, age){
       this.name=name;
       this.age = age;
}

现在我可以使用new 来调用它,即:

var x = new person("tom", 34); 

所以从上面的例子中我可以说之前定义的函数然后用new 可以再次调用!


我不知道的事

1) 函数如何使用圆括号,

2) 看不懂Function( "a", " return a + 1;");这一行

3) 如何实现功能?


我知道你肯定会不喜欢这个问题,但我想这样做是因为我想了解 JavaScript 的每一个细节。

谢谢!

【问题讨论】:

  • 使用Function 构造函数?万维网

标签: javascript function object first-class


【解决方案1】:

1) 这是调用函数的语法,在语言中定义。

f(a); // calls the function "f" with the argument "a"

2) 函数是一等对象,这意味着它们可以像任何其他对象一样被传递,并且像其他对象一样,它们具有构造函数FunctionFunction 构造函数通过在新的隔离范围内评估代码来创建一个新函数,因此您无法访问周围的变量。同样,Functioneval 的一种形式,避免使用它,这不是在 JavaScript 中创建函数的方式。

3) 你没有实现一个函数。函数是已经实现的对象。在 JavaScript 中有两种创建函数的方法。函数声明:

function f(){}

还有一个函数表达式:

var f = function(){};

区别在于提升。见var functionName = function() {} vs function functionName() {}

【讨论】:

    【解决方案2】:

    回答你的问题,

    1. 圆括号是包含参数的语法。

    2. 它可能是一个名为 Function 的函数,它接受两个参数。

    3. 您可以通过使用参数并在函数内部执行一些逻辑来实现函数,也可以使用 return 关键字返回一些内容。

    例如:

    没有return的函数:

    function Hi(name){
      alert("Hi "+name);
    } // Calling it like this: Hi("John"); will alert "Hi John"
    

    以及返回的函数:

    function Hi(name){
      return "Hi "+name;
    }// You can store what's returned in a variable like this: var text=Hi("John");alert(text);
    

    【讨论】:

      最近更新 更多