JavaScript에서 객체의 속성은 데이터 속성과 메모리 속성의 두 가지 유형으로 나뉩니다.
두 속성의 차이점
둘의 차이를 먼저 직관적으로 느끼기 위해 Object.defineProperty()를 사용합니다.
Object.defineProperty()를 이용하여 데이터 속성을 설정하는 방법은 다음과 같습니다
var obj = {}; Object.defineProperty(obj, "prop", { value: 1, writable: true, //可写性 enumerable: true, //可枚举性 configurable: true //设置该属性是否能被删除,以及enumerable属性是否可以被修改 })
Object.defineProperty()를 이용하여 메모리 속성을 설정하는 방법은 다음과 같습니다
var obj = {}; Object.defineProperty(obj, "prop", { get set enumerable: true, //可枚举性 configurable: true //设置该属性是否能被删除,以及enumerable属性是否可以被修改 })
위의 예에서 memory 속성에는 value와 writable이라는 두 가지 속성이 없지만 set 및 get 속성으로 대체되는 것을 볼 수 있습니다.
메모리 속성
데이터 속성과 메모리 속성의 직관적인 차이점을 살펴본 후, 간과하기 쉬운 속성인 메모리 속성에 대해 자세히 살펴보겠습니다(저입니다 TT).
메모리 속성과 데이터 속성의 가장 큰 차이점은 getter/setter가 추가된다는 점입니다. 이를 통해 속성의 값을 연산하고 일부 실용적인 기능을 구현할 수 있습니다.
//example1 function serialnum() { var n =1; var prop = null; Object.defineProperty(this, "n", { get: function() { return n; }, set: function(value) { if(value > n) n = value; else throw '请输入一个大于n的值'; } }) } var obj = new serialnum(); obj.n = 2; //2 obj.n = 0; //Uncaught 请输入一个大于n的值
위의 예에서 set 함수는 n의 값 범위를 제어하는 데 사용됩니다.
여기서 에디터가 js 데이터 속성 저장 속성을 소개하겠습니다. 도움이 되길 바랍니다!