前に、backbone.js の_.isArray(arr)
関数が true を返す理由を尋ねました。
var a = [];
a.something = "test";
私はそれが に変わることを期待していたので[object Object]
(それがあなたがしたときに作成されるオブジェクトを参照する正しい方法であるかどうかはわかりませんがvar o = {}
、 key: value ペアを使用できるオブジェクトのタイプについて話しているのです.そのオブジェクトを参照する方法についての洞察は大歓迎です。
a
データ型を変更するのではなく、プロパティを追加するだけだという回答を受け取りましたsomething
。コンソールで a.something = "test" が表示されていることがわかりますが、これはどこに保存されていますか? それは配列のプロトタイプにありますか?(そうではないと確信しています)。しかし、単純に「プロパティを追加する」とはどういう意味でしょうか?
var a = "";
a.asdf = "test";
a.zxcv = "test1";
文字列はオブジェクトではないため、同様にプロパティを返しませんが、関数はオブジェクトである必要がありますが、
var a = function(){};
a.asdf = "test";
a.zxcv = "test1";
console.log(a);
返すだけ
function (){
}
(文字列のように見えます...)なぜできないのかわからないvar a = new Function()
(見たことがないのに); 上記と同じものを返します。また、jslint はそれが eval だと言っています。どうして..?
「オブジェクトにプロパティを追加する」ことの意味と、これらのプロパティが「移動」する場所、およびオブジェクトの種類によって動作が異なる理由を理解しようとしています。