1

内部に追加のサブ関数を持ちながら、jsで関数を呼び出すことができるかどうか自問しています

fn(s);

fn.subfn(s);

たとえば、このようなユーティリティを作成するには

var s = "123";
string(s) // true
string.blank(s) // false

次のようにできると思います。

function string(s) {
  if(s) return typeof(s) === "string";
  return {
    blank: function(s) {
      return s.trim().length === 0;
    }
  }
}

しかし、文字列を呼び出すたびに、空白の fn を再定義しています。パフォーマンスが低下し、コードが不十分になる可能性があります。それとも間違っていますか?

ありがとう。

4

3 に答える 3

0

Thing() クラスを作成し、「モノ」オブジェクトをインスタンス化して、関数の再定義を防ぐことができます。(あらゆる種類の衝突を防ぐために、string() の代わりに Thing() を使用します。)

function Thing(s) {
    return {
        isString: function() {
            return typeof(s) === "string";
        },
        isBlank: function() {
            return s.trim().length === 0;
        }  
    };
}

var t = new Thing("123");
t.isString() // true
t.isBlank() // false

http://jsfiddle.net/KKrsa/

于 2013-08-26T12:51:17.820 に答える