2016-09-12 5 views
1

私は文字列オブジェクト.soの独自のプロパティを定義して、このプロパティを文字列オブジェクトに直接使用できます。例: - strは私の文字列object.thenですので、以下に示すように.IsNullプロパティを使用できるはずです。javascript文字列オブジェクトにカスタムプロパティを追加する方法

var str = “string”; 

str.IsNull; //returns true if null 

str.IsEmpty; returns true if empty 
+0

は、文字列は 'null'なので(文字列や' null'なのですることはできません異なる方法を得ましたタイプ)。 – nnnnnn

+0

C#はnull文字列を許可します.thanksはjsにヌル文字列がないことを知らなかった –

答えて

1

おかげで私は

Object.defineProperty(String.prototype, 'IsNullOrEmpty', { 
    get: function() { 
     return ((0 === this.length) || (!this) || (this === '') || (this === null)); 
    } 
}); 

var str = ""; 
str.IsNullOrEmpty;//returns true 
3

あなたは文字列のラッパーオブジェクトのプロトタイプに新しいメソッドを追加する必要があります例

String.prototype.yourMethod = function(){ 
// Your code here 
} 
+0

'String'プロトタイプのメソッドで文字列が' null'かどうかをチェックすることはできません。 'null'であり、' String'ではありません。 – Randy

+1

しかし、あなたの例はメソッドを追加します。 OPはプロパティ(またはクライアントコードにプロパティのように見えるゲッターメソッド)を追加しようとしています。 – nnnnnn

+0

jsで文字列をnullにできないのはなぜですか? –

1

についてprototypeプロパティ

を探索することができます。ベストプラクティスは、宣言する前にメソッドがすでに存在するかどうかを確認することです。たとえば:

String.prototype.yourMethod = String.prototype.yourMethod || function() { 
    // The body of the method goes here. 
} 
+1

メソッドが存在するかどうかを "調べる"既存のメソッドが追加しようとしているメソッドとまったく同じように動作するという前提で、盲目的に進んでいれば役に立ちます。 (古いブラウザの標準JSメソッドをポリ充てんするのは問題ありませんが、カスタムメソッドではひどく間違っている可能性があります)。 – nnnnnn

1

私は個人的にプロトタイプを拡張する代わりにこのための関数を作成します。

プロトタイプを拡張する場合は、チェックするすべてのタイプに確実に追加する必要があります。Stringオブジェクトを超えています。あなたのhelp.butのためのあなたのすべてに

function isNull(str) { 
 
    console.log(str === null); 
 
} 
 

 
function isEmpty(str) { 
 
    console.log(typeof str == 'string' && str === ''); 
 
} 
 

 

 
isNull(null); 
 
isNull(''); 
 
isNull('test'); 
 

 
isEmpty(null); 
 
isEmpty(''); 
 
isEmpty('test');

関連する問題