넥사크로 24 에서 바뀐 속성 설정 방법 — set_value() 와 value 대입
넥사크로 24 로 올라가면서 도움말의 속성 설정 문법이 바뀌었다. 21 까지는 set_ 메소드로 설정하라고 했는데, 24 는 속성에 값을 바로 대입하라고 안내한다.
// 넥사크로 21 (21.0.0.1200) 도움말
this.Edit00.set_value("Hello");
// 넥사크로 24 (24.0.0.600) 도움말
this.Edit00.value = "Hello";

24 에서는 둘 다 된다
그렇다고 set_value() 가 없어진 것은 아니다. 24 에서는 두 방법이 모두 동작한다. 개발자도구 콘솔에서 value 속성의 정의를 보면 이유를 알 수 있다.
Object.getOwnPropertyDescriptor(Edit.prototype, "value");
// { enumerable: true, configurable: false, get: f, set: f }
value 는 prototype 에 정의된 접근자 속성(getter/setter)이고, setter 의 위치를 따라가 보면 set_value 와 같은 함수다.
// 넥사크로 24 라이브러리 (ComComp.js) 의 set_value
_pEdit.set_value = function (_a) {
_a = this._convertValueType(_a);
if (this._p_value !== _a) {
if (!this.applyto_bindSource("value", _a)) {
return;
}
this._setValue(_a);
}
};
즉 this.Edit00.value = "Hello" 라고 쓰면 내부에서 set_value("Hello") 가 그대로 실행된다. 값 변환, 바인딩된 데이터셋 반영, 화면 갱신까지 같은 길을 탄다. 라이브러리를 보면 nexacro._defineProperties 로 속성들에 이런 접근자를 일괄로 붙이는 것으로 보인다(내부 함수라 공식 문서에는 없다).
그럼 어떻게 쓰나
- 24 만 쓰는 프로젝트: 도움말대로 대입해도 되고, 기존
set_코드도 그대로 동작한다 - 21 이하와 함께 돌아야 하는 코드(공통 라이브러리 등):
set_메소드를 쓴다. 24 에서도 동작하므로 양쪽에서 안전하다. 21 이하에서도 대입이 setter 를 타는지는 확인하지 않았으니, 대입 방식에 기대지 않는 편이 낫다 - 읽기는 예전부터
this.Edit00.value였으므로 바뀐 것이 없다
투비소프트가 앞으로 set_ 를 점차 없애려는 것인지, 둘 다 계속 지원하려는 것인지는 도움말만으로는 알 수 없다.
다시 쓰며 바로잡은 점
- 원문은 “대입하면 set_ 메소드가 내부에서 실행된다”고만 했다. 이것이 prototype 의 접근자 속성(setter) 덕분이라는 점과, 위 확인은 넥사크로 24(24.0.0.600) 기준이라는 점을 밝혔다
- 여러 버전에서 함께 쓰는 코드는
set_를 쓰라는 실무 기준을 덧붙였다