私はvariable.myMethod()を持つことができ、trueまたはfalseを返すことができる新しいグローバルメソッドを作成する方法はありますか?基本的には、変数が未定義であるかどうかをチェックし、typeof(variable) == 'undefined'
を使用するか関数を指定するのではなく、variable.isUndefined()のようにすることができますか?trueかfalseを返しますか?Javascriptメソッドを追加
答えて
私は先に進み、これを回答として投稿しますので、もう少し詳しく説明します。
私がコメントしたように、は非常にでなければなりません。ここで使用する用語について注意してください。宣言されていないと定義されていないため、非常に異なる2つのことを意味します。
変数が "未宣言"の場合、その変数は存在しないため、宣言されている場合は存在する可能性のあるメソッドを呼び出せません。
変数が "undefined"の場合は存在しますが、値は割り当てられていません。この場合、はに存在する可能性のあるメソッドを呼び出そうとしますが、変数には値がないため失敗する可能性があります。
Object.prototype.myMethod = function() {
console.log("This is my method");
};
ので、理論的には、あなたがかどうかを確認する方法を作成することができます。
JavaScriptですべての種類は、次のようなので、あなたが、それらにメソッドを追加し、Object
タイプの子であります値が存在し、true
/false
の値を返します。 StackOverflowのユーザーBarmarが指摘何
undefined
と
null
は、このようにあなたの方法は存在しません、
Object
タイプの子ではありません。
他のコメントを述べてきたように、あなたはおそらくのようなものに固執する方がよいでしょうが、以下:ユーザーBarmarが指摘したように
if (!myVariable) {
// myVariable doesn't have a value
}
を私は、私の説明のほとんどは不要だったことを指摘したいと思い、 宣言されていないものと未定義のものとの間には実質的な違いはありませんです。
変数が宣言されていない場合、 "value"は基本的にundefined
と読み込まれ、メソッドは存在しません。
この質問では、「宣言されていない」という用語は使用されていませんでした。答えのその部分は何を指していますか? – Barmar
厳密なモードでない限り、宣言されていないと定義されていないの違いはあまり重要ではありません。変数に代入すると、その名前でグローバル変数が作成され、未割り当ての宣言された変数と同じように、その変数から読み込むと 'undefined'が返されます。 – Barmar
@Barmar、あなたはもう一度正しいです。元の質問は「宣言されていない」とは決して言及されていませんでしたが、私はそれらの用語の間で異なっていることに気づく価値があると感じます。厳密なモードでなくても、存在しない変数のメソッドを呼び出そうとすると失敗するでしょうか? –
これはパラドックスです。定義されていないオブジェクトは何も持っていないので、未定義のオブジェクトの中にメソッドを持つことはできません。それは明確なので、あなたもBを持っていけないので、動作しないことができるa.b.isDefined()を呼び出すようにしようと、
var a = {};
a.bがここに定義されていません。このオブジェクトを想像作ります。あなたがこのように定義されたbを必要とするようにします。
var a = {b:1,isUndefined:function(){return false}}
したがって、オブジェクトを取るジェネリック関数を作る必要があります。これはトリックを行います
function isUndefined(obj,stringLink){
var arrayLink = stringLink.split(".");
var current = obj[arrayLink[0]];
if(!current)return false;
for(var i =1;i< arrayLink.length;i++){
current = current[arrayLink[i]];
if (!current)return false;
}
return true;
}
ネストされたオブジェクトがターゲットに到達するまで多かれ少なかれチェックされます。 ありがとうございます
var a = {b:{c:{d:{e:{f:1}}}}}
//this function will do a["b"]["c"]["d"]["e"]["f"]
isUndefined(a,"a.b.c.d.e.f") //gives true
//or you can use
if(a&&a.b&&a.b.c&&a.b.c.d&&a.b.c.d.e&&a.b.c.d.e.f)//lots of work here
ここでは、falseの代わりにtrueを返し、trueの代わりにfalseを返します。またはjsutは関数の名前をisDefinedに変更します。 – Qaddura
- 1. Linqメソッドの追加とストアドプロシージャの追加
- 2. javascriptバッチキーを追加
- 3. JavaScriptメソッドをコントローラメソッドに動的に追加しました。Stackoverflow
- 4. オブジェクトの配列にオブジェクトを追加するjavascript push()メソッド
- 5. object.prototype doesnt workを使ったJavascriptの追加メソッド
- 6. JavascriptでArrayオブジェクトにメソッドを追加しますか?
- 7. JavaScript()関数にメソッドを追加する方法
- 8. JavaScript内のメソッド内にオブジェクトを追加できますか?
- 9. Javascript:複数のメソッドをプロトタイプに追加していますか?
- 10. リンクリストの追加メソッド
- 11. 追加テキストJavascript
- 12. java(jGrasp)でメソッドを追加
- 13. メソッドを追加する
- 14. ダブルリンクリスト(バブルソート)のメソッドを追加
- 15. ApplicationUserManagerにメソッドを追加
- 16. (Office用のJavaScript API 1.3)カスタムプロパティの追加メソッド
- 17. Javascriptの追加アイコン
- 18. は、追加のjavascript
- 19. Javascriptの追加エラーメッセージ
- 20. .Net MVC 3 Javascriptを追加
- 21. javascriptファイルにメタタグを追加
- 22. Javascriptを追加する
- 23. rating star javascriptエラーを追加
- 24. 先頭へJavaScriptを追加
- 25. コントローラアクションzf2でjavascriptを追加
- 26. Javascript jsを追加する
- 27. Javascriptを追加電卓
- 28. jQuery - DivにJavaScriptを追加
- 29. data.loadGeoJsonにjavascript varsを追加
- 30. jQueryでjavascriptを追加
未定義または宣言されていませんか?なぜ 'isUndefined(variable)'ではないのですか? – elclanrs
'if(!variable){...}'?... – War10ck
いいえ、これはできません。メソッドはオブジェクトのプロパティであり、変数ではありません。 – Barmar