7

次の API を作成するとします。

var api = function(){}

api.prototype = {
  constructor: api,
  method: function() {
    return this;
  }
};

さて、これは次のように機能します:

var myApi = new api();
myApi.method();

newしかし、これが機能するように、キーワードをオプションにしたいとしましょう:

api().method();

私は頭から離れます:

var api = function() {
  if ( !(this instanceof api) ) {
    return new api();
  }
};

しかし、これはどういうわけか簡単に感染するのでしょうか、それともこの方法を使用する際に他の危険性があるのでしょうか? f.ex jQuery はこれを行わない (コンストラクターをプロトタイプ メソッドにオフロードする) ことを知っているので、これを行わない正当な理由があると確信しています。私は彼らを知りません。

4

2 に答える 2

-1

どちらか一方の規則を選択してください。APIハンドルにオブジェクトを使用したいが、他の人に使用させたくない場合はnew、2つの関数を使用します。Api()これはオブジェクトのコンストラクターであり、新しいインスタンスapi()を返すだけの通常の関数です。Api

あなたが提案することに危険はないと思います。それは無意味に思えますし、関数が2つのことを同時に行うという考えは好きではありません。

于 2012-11-08T00:31:46.567 に答える