JavaScriptでオブジェクトのプロパティをすべて(あるいはより多く)取得する方法についてです。
「for...in」だとenumerableがfalesのプロパティは扱ってくれません。
「Object.getOwnPropertyNames」だと、enumerableがfalesのプロパティは取得できるものの、プロトタイプチェーンのプロパティは扱えません。
両者を包括するために、「Object.getOwnPropertyNames」で取得したプロパティの配列と「for...in」で取れるプロパティをマージすればいいのですが…。そんなことをせずとも取得できる方法が用意されていてもよさそうなものだと思います。
さらに言えば、できれば
lang
1obj[key]
の形式で取得できるすべてのプロパティを取得できるのなら、その方法が知りたいです…。
(普通に考えてあってもいいような気がしませんか?)
JavaScriptでプロパティを「すべて」あるいは「より多く」取得する方法。これについて教えてください。
よろしくお願いします。
※この質問は具体的にやりたいことがあって行き詰っているわけでは無く、勉強していてこういうことはできないのかと思った程度の話なので、出来ないのなら「できない」といっていただければ、それも大変参考になります。
lang
1function User() {} 2User.prototype.name1 = "u1"; 3var u = new User(); 4Object.defineProperty(u, "name2", { 5 value: "u2", 6 writable: true, 7 enumerable: false, 8 configurable: true 9}); 10 11// name1しか取れない 12for (var key in u) { 13 console.log(key + ":" + u[key]); 14} 15// name2しか取れない 16console.log(Object.getOwnPropertyNames(u)); 17 18// 実際にはname1とname2以外もある 19console.log(!!u["hasOwnProperty"]);
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。