이 코드에서 직면 한 문제는 콜백에서 속성을 선언하는 데 동일한 구조를 사용하지 않는다는 것입니다.
예를 들어, 함수가 속성으로 끝나면 options.foo.bar
콜백에서 선언 self.bar
하지만 동일한 구조를 유지하기를 원하므로 self.foo.bar
.
어떻게 할 수 있습니까?
function forEachProperty(object, callback) {
for (var property in object) {
if (!object.hasOwnProperty(property)) {
continue;
}
if (object[property].constructor === Object) {
this.forEachProperty(object[property], callback);
} else {
callback(object, property);
}
}
}
// Usage
forEachProperty(options, function (object, property) {
if (property !== 'timeUrl' && property !== 'element') {
self[property] = object[property];
}
});
이 시도:
function forEachProperty(loc,object, callback) {
for (var property in object) {
if (!object.hasOwnProperty(property)) {
continue;
}
if (object[property].constructor === Object) {
if(loc[property]===undefined)loc[property]={};
this.forEachProperty(loc[property],object[property], callback);
} else {
callback(loc,object, property);
}
}
}
var self={bar:{baz:999}};
var options={test:'hello world',bar:{foo:8}}
// Usage
forEachProperty(self,options, function (loc,object, property) {
if (property !== 'timeUrl' && property !== 'element') {
loc[property] = object[property];
}
});
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다