以前の質問では、私は照会の際に複数のオブジェクトキーを受け取りました。それを超えて、私は非常に小さなオブジェクトの例を構築して、オブジェクトの操作方法を発見しました。私はmacbook air 2(yosemite)-upptodateでFirefox 51.0.1を使っています。私が得ている結果は全く説明できません。誰かがこれらの結果を説明でき、これを修正する方法を提案できますか?OBJ aprop出力 Javascriptオブジェクトの不思議な振る舞いを避けるには?
オブジェクト0
J 0キーOBJ bprop(キー)1
J 1つの鍵(キー) "1"
J 2キーのcpropのOBJ(キー)1予想]
0:(aprop):[1]、(bprop):[ "2"]、(のcprop):[1] OBJ aprop]、
オブジェクト1
J 0キー(鍵)2
j 1キーbprop obj(キー) "two"
[2]、[bprop]:["two"]、(cprop):[[2,2]]、
:(aprop):[2]、[cprop]物体2
OBJ aprop J 0キーOBJ bprop(キー)3
J 1つの鍵(キー) "三" J 2キーのcpropのOBJ(キー)[3,3,3]
2:(aprop): 3、(bprop):[ "3"]、(のcprop):[[3,3,3]]、
実際の出力
オブジェクト0
OBJ apropJ 0キーOBJ aprop(キー)1
J 1つのキーOBJ aprop(キー)1
J 2鍵(キー)1
0:(aprop):[1]、(aprop):[1 ]、(aprop):[1]、
オブジェクト1
J 0鍵bpropのOBJ(キー)は、2つの
J 1キーbpropのOBJ(キー)は、2つの
OBJ bprop J 2鍵(キー)は、2つの
1 (bprop):[2]、(bprop):[2]、
オブジェクト2
j 0キーcprop obj(キー)3,3,3
(cprop):[3(3,3,3)]、[cprop]:[3(3)3]、[cprop]、[cprop]、[cprop] 、3,3]、(のcprop):[3,3,3]、
var objList = [];
class TestObj {
constructor(aprop, bprop, cprop) {
this.aprop = aprop;
this.bprep = bprop;
this.cprep = cprop;
this.dprop = 0;
}
getAprop() {
return aprop;
}
getBprop() {
return bprop;
}
getCprop() {
return cprop;
}
getDprop() {
return dprop;
}
setAprop(arg) {
aprop = arg;
}
setBprop(arg) {
bprop = arg;
}
setCprop(arg) {
cprop = arg;
}
setDprop(arg) {
dprop = arg;
}
}
var keylist = ["aprop", "bprop", "cprop"];
function create() {
putList();
var t1 = objList[1];
alert("fromlist " + t1);
for (var i = 0; i < objList.length; i++) {
var s = "" + i + ": ";
var obj = objList[i];
console.log(" object " + i);
for (var j = 0; j < keylist.length; j++) {
var key = keylist[i];
console.log(" j " + j + " key " + key + " obj(key) " + obj[key]);
s += "(";
s += key;
s += ")";
s += ": ";
s += "[";
s += obj[key];
s += "]";
s += ",";
}
console.log(s);
}
}
function putList() {
onlist(1, "one" [1]);
onlist(2, "two", [2, 2]);
onlist(3, "three", [3, 3, 3]);
}
function onlist(a, b, c) {
var item = new TestObj();
item["aprop"] = a;
item["bprop"] = b;
item["cprop"] = c;
objList.push(item);
}
create();
文字列連結を使用してオブジェクトを作成するのはなぜですか? – Satpal
'var key = keylist [i];' - それは 'keylist [j]'であってはなりませんか?私は 'forEach'や' _.each'(underscore.jsから)を使ってそのような間違いを避けることをお勧めします。 – yeputons
'getAprop(){return aprop; } 'be 'getAprop(){this.apropを返します。 } '?あなたのセッターにも同じです。それ以外の場合は、インスタンスプロパティ値ではなくグローバルプロパティ値を設定して取得しています。 – RobG