vue.js 는 Object.defineProperty 를 이용 하여 양 방향 연결 을 실현 합 니 다.
3910 단어 vue.jsObject.defineProperty
몇 줄 의 코드 를 그 가 어떻게 사용 하 는 지 보 자.
var a= {}
Object.defineProperty(a,"b",{
value:123
})
console.log(a.b);//123
간단 합 니 다.세 개의 인 자 를 받 아들 이 고 모두 필수 입 니 다.입력 매개 변수
첫 번 째 매개 변수:대상
두 번 째 매개 변수:정 의 된 속성 이나 방법의 이름 이 필요 합 니 다.
세 번 째 매개 변수:목표 속성 이 가지 고 있 는 특성.(descriptor)
앞의 두 매개 변 수 는 더 이상 말 하지 않 고 코드 를 보면 알 수 있 습 니 다.주로 세 번 째 매개 변수 descriptor 를 보고 어떤 수치 가 있 는 지 보 세 요.
descriptor
그 는 또 아래 의 수 치 를 취 했다.우 리 는 간단하게 알 아 보 자.뒤의 예 를 들 어 하나씩 소개 하 자.
첫 번 째 예 를 다시 보 겠 습 니 다.
var a= {}
Object.defineProperty(a,"b",{
value:123
})
console.log(a.b);//123
우 리 는 value 만 설 정 했 습 니 다.다른 것 은 설정 되 지 않 았 습 니 다.그러나 첫 번 째 때 는 간단하게 이해 할 수 있 습 니 다.writable,configurable,enumerable 을 기본 으로 해 줍 니 다.모두 값 을 설정 하고 값 도 모두 false 입 니 다.즉,위의 코드 와 아래 는 등가(첫 번 째 설정 에 만 국한)라 는 것 이다.
var a= {}
Object.defineProperty(a,"b",{
value:123,
writable:false,
enumerable:false,
configurable:false
})
console.log(a.b);//123
이상 중요 합 니 다.그리고 이상 의 이 해 는 set 와 get 에 도움 이 되 지 않 습 니 다.configurable
총 스위치,첫 번 째 설정 false 이후 두 번 째 설정 은 아무것도 안 됩 니 다.예 를 들 어
var a= {}
Object.defineProperty(a,"b",{
configurable:false
})
Object.defineProperty(a,"b",{
configurable:true
})
//error: Uncaught TypeError: Cannot redefine property: b
잘못 보고 할 거 야.위 에서 말 한 기본 값 을 주의 하 세 요...처음 설정 하지 않 으 면 어떻게 되 는 거 야?false 로 설정 해 드릴 게 요.그 러 니까두 번 째.다시 설치 하면 어떻게 되 는 거 야?맞다
writable
fasle 로 설정 하면 읽 기 전용 으로 변 합 니 다.
var a = {};
Object.defineProperty(o, "b", {
value : 123,
writable : false });
console.log(a.b); // 37
a.b = 25; // ( , )
console.log(o.a); // 37, 。
enumerable속성 특성 enumerable 은 대상 의 속성 이 for...in 순환 과 Object.keys()에서 매 거 될 수 있 는 지 를 정의 합 니 다.
var a= {}
Object.defineProperty(a,"b",{
value:3445,
enumerable:true
})
console.log(Object.keys(a));// ["b"]
false 로 바꾸다
var a= {}
Object.defineProperty(a,"b",{
value:3445,
enumerable:false //
})
console.log(Object.keys(a));// []
for...in 유사,군말 하지 않 겠 습 니 다.set 와 get
descriptor 에 서 는 접근 기(get 과 set)와 wriable 또는 value 를 동시에 설정 할 수 없습니다.그렇지 않 으 면 틀 릴 수 있 습 니 다.get 과 set 를 사용 하려 면 writable 이나 value 중 하 나 를 사용 할 수 없습니다.
set 와 get,둘 이 뭐 하 는 거 야?
var a= {}
Object.definePrope` `rty(a,"b",{
set:function(newValue){
console.log(" , "+newValue)
},
get:function(){
console.log(" ")
return 2 // , 2
}
})
a.b =1 // , 1
console.log(a.b) //
// 2 ,
쉽게 말 하면 이"b"할당 이나 값 을 추출 할 때 각각 set 와 get 에 대응 하 는 함 수 를 촉발 합 니 다.그게 observe 를 실현 하 는 관건 이 잖 아.
다음 편 은 제 가 분석 하 겠 습 니 다vue 의 observe 구현 소스 코드,자신 이 어떻게 한 걸음 한 걸음 씩$watch 를 실현 하 는 지 이야기 합 니 다..
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[백견불여일타/Vue.js] 4장 - 입력 폼 데이터 가져오기v-model 데이터 입력 select 지난 장에서는 v-bind를 이용해서 HTML 태그 속성 값을 Vue로 다루는 법을 배웠습니다. 이번에는 사용자가 입력한 데이터를 Vue로 가져오는 법에 대해 다룹니다. 웹 페...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.