function infoData(){
this.data = {
'param1' : null,
'param2' : null,
'param3' : null,
'param4' : null,
'param5' : null
}
return {
setData : function (){
var arr_key = new Array();
Object.keys(infoData.data).forEach(function(key) { arr_key.push(key); });
if (arr_key.length == arguments.length){
for(var i = 0; i
infoData.data[arr_key[i]] = arguments[i]; }//for
}else{console.log("arr_key.length != arguments.length")}//if
$('#test_input').val(infoData.data);
console.log(thinfoDatais.data);
}
}
}
function test(){
this.Data = infoData();
Data.setData(1,2,3,4,5);
}
여기서
Object.keys(infoData.data).forEach(function(key) { arr_key.push(key); }); 이부분이 에러나는 왜 그런지 암ㅎ??
제발 알려줘...
누워서 코드만 봐서는 잘모르겠지만, 아마 this.data라고 배열선언한 부분이 잘못된거 같다. var data라고 고치고 클로저로 써. 글고 생성자함수로 쓰지않는 단독 function의 this는 기본적으로 전역변수인 경우가 많아. 즉 선언한 함수로 this가 가질않으니 주의해야함.
뭐야 코드 돌려보니까 완전 잘못 짜놧는데;; 너 자바스크립트 객체지향 모르냐?
뭐 유동이니 안볼거 같지만 혹시나 해서 올려본다.
https://jsbin.com/mekekehano/edit?js,console
자바스크립트
객체지향이랑 함수의 this 스코프랑 클로저에 대해서 다시 한번 공부해보는게 좋을듯