2012-03-14 4 views
2

undefinedではなく、nullではない値が未知の文字列unknownStrがあるとします。Javascriptでは、オブジェクトに文字であるキーがある場合、そのキーの.lengthは1以外の値になりますか?

たちは、このコードを持っていると仮定します

var chrArray = []; 
var keyValObject = {}; 
var keyLength; 
for (var i = 0; i < unknownStr.length; i++) { chrArray.push(unknownStr[i]); } 
for (var i = 0; i < chrArray.length; i++) { keyValObject[chrArray[i]] = "foo"; } 
for (var key in keyValObject) { keyLength = key.length; } 

はそれがkeyLengthがこれまで1以外の値を持つことは可能ですか?

+1

は、それは私が= 0(VARは、」すべきではないよりも大きい長さを有しているlongKeyが表示されます。私はunknownStr.lengthを<;私++ ) "? – Kristian

+3

はい - 'Object.prototype'を拡張することを検討してください。 – pimvdb

+1

この質問のポイントは何ですか? 1文字の文字列は常に(組み込みのデータ型の可能な変更を除いて)長さ1を持ちます。 –

答えて

2

はい、これは可能であり、

Object.prototype.longKey = "foo"; 

これで、すべてのオブジェクトがkeyValObject含むプロパティlongKeyを持っていますが、次のように証明することができます。あなたはhasOwnPropertyforループでkey値を制限するものではありませんので、それは最終的に1

+0

この回答と上記のpimvdbのコメントは、 'object.prototype'が拡張され、キーを選択するときに' hasOwnProperty'をチェックしなかった場合のみです。 – chopperdave

+0

..さらに、プロトタイピングはまだまだ私にとっては新しい概念なので、 'object.prototype'がコードスニペットのように拡張されていれば、' keyValObject'は自動的に 'key'' longKey'それが 'var keyValObject = {};'によってインスタンス化されるとすぐに '' foo ''の' 'value' – chopperdave

+0

@chopperdaveはい、そうです。 – JaredPar

関連する問題