gpt4 book ai didi

Node.js 中 Javascript 的新运算符

转载 作者:太空宇宙 更新时间:2023-11-04 02:48:55 26 4
gpt4 key购买 nike

我有以下代码:

    var http = require('http');
var static = require('node-static');
var file = new static.Server();
http.createServer(function (req, res) {
file.serve(req, res);
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

来自书中,node.js for php 开发人员。 Wrt 行 'var file = new static.Server();'作者说有一个静态对象,Server() 是一个构造函数。这怎么可能?实例化类时会调用构造函数。即使在实例化之后,JavaScript 是否允许对象调用其构造函数?

最佳答案

JavaScript 没有任何类。它只有对象,对象就像 PHP 中的关联数组。例如,考虑以下 PHP 代码:

$foo = array(
"bar" => "baz",
"baz" => "bar"
);

在 JavaScript 中,您可以将其编写如下:

var foo = {
bar: "baz",
baz: "bar"
};

然而,JavaScript 真正酷的地方在于它拥有一流的函数。 PHP 没有(@$&#%!PHP)。这意味着 JavaScript 中的函数只是值。您可以将它们存储在变量中,将它们作为参数和返回值传递,甚至将它们放在对象上。例如:

var object = {
add: function (x, y) {
return x + y;
}
};

object.add(2, 3); // 5

有趣的是,JavaScript 是函数式编程风格和面向对象编程风格的融合,这两种编程风格如此错综复杂地交织在语言结构中,以至于无法将它们分开。

例如,在 JavaScript 中创建对象的主要方法是使用函数。函数可以正常调用,也可以作为构造函数调用(即通过在函数调用前添加 new 关键字作为前缀)。当函数作为构造函数被调用时,JavaScript 在幕后创建一个新对象,并使用构造函数对其进行初始化。例如:

function Person(firstname, lastname) {
this.fullname = firstname + " " + lastname;
}

var me = new Person("Aadit", "Shah");
alert(me.fullname); // Aadit Shah

在您的情况下,函数Server是对象static的属性(这实际上使函数Server成为static的方法)。与其他编程语言中的方法一样,我们将其称为如下:

static.Server();

在这种情况下,函数 Server 中的特殊变量 this 将指向对象 static,因为它是作为 static 的方法调用的。然而,根据具体情况,this 并不总是静态:

var o = {};
var Server = static.Server;

Static(); // this will be the global object
Static.call(o); // this will be the object o
new static.Server; // this will be the newly created object

正如您所见,JavaScript 是一种非常动态且多功能的语言,并且它比 PHP 强大得多。我建议你从这里开始学习JavaScript:https://developer.mozilla.org/en/learn/javascript

关于Node.js 中 Javascript 的新运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18702374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com