Notice
Recent Posts
Recent Comments
Link
투케이2K
516. (javaScript) 자바스크립트 new Proxy 사용해 객체 변경 상태 이벤트 감지 , json 특정 key 데이터 변경 및 key 삭제 이벤트 감지 본문
JavaScript
516. (javaScript) 자바스크립트 new Proxy 사용해 객체 변경 상태 이벤트 감지 , json 특정 key 데이터 변경 및 key 삭제 이벤트 감지
투케이2K 2026. 3. 25. 19:13728x90
반응형
[개발 환경 설정]
개발 툴 : Edit++ / Vscode
개발 언어 : JavaScript

[소스 코드]
-----------------------------------------------------------------------------------------
[사전 설명 및 설정 사항]
-----------------------------------------------------------------------------------------
- 개발 환경 : Web
- 개발 기술 : JavaScript (자바스크립트) / Proxy / event
- 사전) 👉 new Proxy 간략 설명 :
>> new Proxy 는 자바스크립트에서 객체의 동작을 가로채고 제어할 수 있는 강력한 메커니즘입니다.
>> new Proxy 는 객체에 접근하거나 값을 바꾸는 행동을 “가로채서” 원하는 로직을 덧붙일 수 있습니다.
>> new Proxy 기본 구조 :
const proxy = new Proxy(target, handler);
>> 사전) new Proxy 단독 사용 시 주의점 :
- 상위 레벨만 감지
- 중첩 객체 변경 → 감지 안 됨
- 배열 내부 변경 → 감지 안 됨
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
[소스 코드]
-----------------------------------------------------------------------------------------
<!DOCTYPE HTML>
<html lang="ko">
<head>
<title>javaScriptTest</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- 반응형 구조 만들기 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<!-- 내부 CSS 스타일 지정 -->
<style>
html, body {
width: 100%;
height: 100%;
margin : 0 auto;
padding : 0;
border : none;
background-color: #666;
}
</style>
<!-- [CDN 주소 설정] -->
<script src="https://code.jquery.com/jquery-latest.min.js"></script>
<!-- [자바스크립트 코드 지정] -->
<script type="module">
window.onload = async function() {
console.log("[window onload] : [html 최초 로드 및 이벤트 상시 대기 실시] : [start]");
try {
// --------------------------------------------
// ✅ [자바스크립트 Proxy 사용해 객체 전체 감시 등록]
// --------------------------------------------
// new Proxy 단독 :
// ✅ 상위 레벨만 감지
// ❌ 중첩 객체 변경 → 감지 안 됨 ----> 재귀 프록시 방식으로 구현 필요
// ❌ 배열 내부 변경 → 감지 안 됨 ----> 재귀 프록시 방식으로 구현 필요
// --------------------------------------------
const json = new Proxy( { }, { // { } JSON 초기화 등록
set(target, prop, value) {
console.log(`Proxy : set : ${prop} >> `, value);
target[prop] = value;
return true;
},
deleteProperty(target, prop) {
console.log(`Proxy : delete : ${prop} >> 삭제됨`);
delete target[prop];
return true;
}
});
// --------------------------------------------
// ✅ [json 데이터 특정 값 추가]
// --------------------------------------------
json.name = 'twok';
json.job = {main: 'IT'};
json.addr = ['1', '2'];
console.log('json print_1 : ', JSON.stringify(json));
// --------------------------------------------
// ✅ [json 데이터 특정 값 변경]
// --------------------------------------------
json.name = '2k';
json.job.main = 'Programer'
json.addr[0] = '0';
console.log('json print_2 : ', JSON.stringify(json));
// --------------------------------------------
// ✅ [json 데이터 특정 값 삭제]
// --------------------------------------------
delete json.name;
console.log('json print_3 : ', JSON.stringify(json));
// --------------------------------------------
// ✅ [전체 로그 출력 동작] : 단독 Proxy 사용 (중첩 객체 변경 → 감지 안 됨 / 배열 내부 변경 → 감지 안 됨)
// --------------------------------------------
/*
Proxy : set : name >> twok
Proxy : set : job >> {main: 'IT'}
Proxy : set : addr >> (2) ['1', '2']
json print_1 : {"name":"twok","job":{"main":"IT"},"addr":["1","2"]}
Proxy : set : name >> 2k
json print_2 : {"name":"2k","job":{"main":"Programer"},"addr":["0","2"]}
Proxy : delete : name >> 삭제됨
json print_3 : {"job":{"main":"Programer"},"addr":["0","2"]}
*/
// --------------------------------------------
}
catch (exception) {
console.error("[window onload] : [Exception] : 예외 상황 발생 : ", exception);
}
};
</script>
</head>
<body>
</body>
</html>
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
[참고 사이트]
-----------------------------------------------------------------------------------------
[간단 소스] 자바스크립트 커스텀 json key 정렬 함수 생성 및 string , number , date 타입 asc , desc 정렬 수행
https://kkh0977.tistory.com/8695
https://blog.naver.com/kkh0977/224215514697
[간단 소스] 자바스크립트 Object.entries 사용해 json 에 저장 된 key , value 값 동시 출력 수행
https://kkh0977.tistory.com/8699
https://blog.naver.com/kkh0977/224218640323
[간단 소스] 자바스크립트 Object.fromEntries 사용해 json 객체 특정 value 값 기준 필터링 및 value 값 기준 정렬 수행
https://kkh0977.tistory.com/8703
https://blog.naver.com/kkh0977/224219981284
-----------------------------------------------------------------------------------------
728x90
반응형
'JavaScript' 카테고리의 다른 글
Comments
