0

次のコードがあります。

    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/');

本から、php開発者向けのnode.js。Wrt 行 'var file = new static.Server();' 著者は、静的なオブジェクトがあり、Server() がコンストラクターであると述べています。そんなことがあるものか?コンストラクターは、クラスがインスタンス化されるときに呼び出されます。javascript では、オブジェクトはインスタンス化後でもコンストラクターを呼び出すことができますか?

4

3 に答える 3

0

staticというプロパティを持つオブジェクトServerです。
このプロパティの値は関数です。

コードはその関数をコンストラクターとして呼び出します。

staticそれ自体はおそらく単純なオブジェクトです(そのコンストラクターはおそらくですObject

于 2013-09-09T16:06:15.013 に答える
0

オブジェクト static があり、 Server() はコンストラクターです。そんなことがあるものか?

staticServer関数であるプロパティを持つプレーンなオブジェクトです。この関数はnewキーワードを使用してコンストラクターとして呼び出すことができます。static名前空間のように見えます。

コンストラクターは、クラスがインスタンス化されるときに呼び出されます。

JavaScript では、コンストラクターは「クラス」コンストラクトを定義します。したがって、「オブジェクトをインスタンス化するためにコンストラクターが呼び出されます(それぞれのプロトタイプを使用)」である必要があります。

javascript では、オブジェクトはインスタンス化後でもコンストラクターを呼び出すことができますか?

技術的には、はい。構築は常に「(継承などを使用して)新しいオブジェクトを作成し、その上でコンストラクターを呼び出してオブジェクトを初期化する」ため、ニュースではありません。それでも、JavaScript では、.callメソッドを使用して、任意のオブジェクトすべてに [カスタムの非ネイティブ] コンストラクター関数を適用できます。

于 2013-09-09T16:58:56.100 に答える