js-ES6 학습 노트 - 대상의 확장
var ms = {};
function getItem (key) {
return key in ms ? ms[key] : null;
}
function setItem (key, value) {
ms[key] = value;
}
function clear () {
ms = {};
}
module.exports = { getItem, setItem, clear };
//
module.exports = {
getItem: getItem,
setItem: setItem,
clear: clear
};
2. ES6는 글자의 양으로 대상을 정의할 때 표현식을 대상의 속성 이름으로 한다. 즉, 표현식을 네모난 괄호 안에 놓는다.
let propKey = 'foo';
let obj = {
[propKey]: true,
['a' + 'bc']: 123
};
3. ES5는 두 개의 값이 같은지 아닌지를 비교하는데 두 개의 연산자만 있다. 그것이 바로 같은 연산자
==
와 엄격한 같은 연산자===
이다.전자는 자동으로 데이터 유형을 변환하고 후자NaN
는 자신과 같지 않으며+0
는 -0
와 같다는 단점이 있다.ES6는 이 문제를 해결하기 위해'Same-value equality'(동일한 값과 같음) 알고리즘을 제시했다.
Object.is
가 바로 이 알고리즘을 배치하는 새로운 방법이다.이것은 두 값이 엄격하게 같은지 비교하는 데 사용되며, 연산자(===)를 엄격하게 비교하는 행위와 기본적으로 일치한다.+0 === -0 //true
NaN === NaN // false
Object.is(+0, -0) // false
Object.is(NaN, NaN) // true
4.
Object.assign
방법은 대상의 합병에 사용되며 원본 대상(source)의 모든 매개 속성을 목표 대상(target)에 복사합니다.대상 객체와 소스 객체에 동일한 이름의 속성이 있거나 여러 소스 객체에 동일한 이름이 있으면 뒤의 속성이 앞의 속성을 덮어씁니다.Object.assign
방법은 깊이 있는 복사가 아니라 얕은 복사를 실행한다.즉, 원본 대상의 어떤 속성의 값이 대상이라면 목표 대상이 복사한 것은 이 대상의 인용이다.이런 끼워 넣은 대상에 대해 동명 속성을 만나면
Object.assign
의 처리 방법은 추가하는 것이 아니라 바꾸는 것이다.Object.assign
는 그룹을 처리할 수 있지만, 그룹을 대상으로 볼 수 있습니다.Object.assign([1, 2, 3], [4, 5])
// [4, 5, 3]
// ,Object.assign 0、1、2 , 0 4 0 1。
5. ES5는 세 가지 조작으로
enumerable
이 false
인 속성을 무시한다.for...in
순환: 대상 자체만 훑어보고 계승할 수 있는 매거 가능한 속성Object.keys()
: 대상 자체의 모든 열거 가능한 속성을 되돌려주는 키 이름JSON.stringify()
: 직렬화 대상 자체만 매거할 수 있는 속성Object.assign()
을 추가했습니다. enumerable
인 속성은 무시하고 개체 자체의 열거 가능한 속성만 복사합니다.전반적으로 말하면 조작에서 계승된 속성을 도입하면 문제를 복잡하게 할 수 있다. 대부분의 경우 우리는 대상 자체의 속성에만 관심을 가진다.그러니 되도록
false
순환을 하지 말고 for...in
로 대체하세요.6. 속성의 반복:
상기 5가지 방법은 대상의 속성을 훑어보고 같은 속성을 훑어보는 순서 규칙을 준수한다.
7. ES5는
Object.keys()
방법을 도입하여 하나의 그룹을 되돌려줍니다. 구성원은 매개 변수 대상 자체의 모든 누적(enumerable) 속성의 키 이름입니다.ES2017은 Object.keys
와 조립된Object.keys
과Object.values
를 도입하여 한 대상을 두루 훑어보는 보충 수단으로 Object.entries
를 순환적으로 사용하도록 했다.for...of
대상 자체의 범람 가능한 속성만 되돌려줍니다.var obj = Object.create({}, {p: {value: 42}});
Object.values(obj) // []
위 코드에서
Object.values
방법의 두 번째 매개 변수에 추가된 대상 속성(속성Object.create
)은 명시적으로 명시하지 않으면 기본적으로 범람할 수 없습니다. 왜냐하면 p
의 속성 설명 대상의 p
은 기본enumerable
이기 때문입니다. false
는 이 속성을 되돌려주지 않기 때문입니다.Object.values
를 enumerable
로 바꾸면 true
는 속성Object.values
의 값을 되돌려줍니다.8、현재 제안이 하나 있는데, "Null 전도 연산자"(null propagation operator)
p
를 도입하였다.Null 전도 연산자에는 네 가지 사용법이 있습니다.
?.
//읽기 대상 속성obj?.prop
//동상obj?.[expr]
//함수 또는 대상 방법의 호출func?.(...args)
//구조 함수의 호출new C?.(...args)
연산자는 그 중 하나가 되돌아오기?.
나null
만 하면 아래로 연산하지 않고 되돌아오기undefined
.전재 대상:https://www.cnblogs.com/zczhangcui/p/6426398.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.