나는 다음과 같은 코드자바 스크립트 Object.Create 복사 참조 객체하기
ViewModel.prototype.update = function(initial) {
var ittr, key, val, x;
for (key in initial) {
val = initial[key];
if ($.isArray(val) && $.isArray(this[key]())) {
ittr = 0;
while (ittr < val.length) {
if (this[key].length > ittr) {
if ((this[key][ittr - 1]) instanceof ViewModel) {
x = Object.create(this[key][ittr - 1]);
x.update(val[ittr]);
this[key].push(x);
}
}
}
}
}
}
내가 뷰 모델에서 상속 객체를 가지고 있고, 그들은 모두 함수로 업데이트가에게 있습니다. 배열이있어서 json 객체의 새로운 요소로 업데이트하고 있습니다 (초기). 언젠가 Json 객체가 업데이트 할 기존 배열보다 길기 때문에 동일한 유형의 객체를 추가하고 싶습니다. 배열의 마지막 객체를 가리키는 Object.create (this [key] [ittr -1])를 사용하고 있습니다.이 객체에서 새 객체를 인스턴스화하려고 시도합니다. 문제는 모든 반복 작업에서 새 개체를 만들지는 않지만 오래된 개체의 복사본 일뿐입니다. 내가 어떻게 그걸 막을 수 있을지 생각해?
나뿐만 아니라
new $.extend({},this[key][ittr - 1])
은 내가 x.update 전화 이제까지는 배열의 모든 값을 변경하면 배열
x[ittr] = Object.create(this[key][ittr - 1]);
x[ittr].update(val[ittr]);
this[key].push(x[ittr]);
로 X을 시도했습니다 JQuery와를 시도했습니다있는 x와 같게 설정되었습니다. 그래서 실제로 Object.create를 호출 할 때 새로운 객체를 만들지는 않습니다.
'Object.prototype.create'가 없습니다. – Bergi
좋은 지적입니다. 그것은'Object.create' 여야합니다. –