ECMAScript 5 의 새로운 기능
7499 단어 ECMAScript
1. strict 모드
strict 모델 은 현재 실현 되 는 사람 이 없 지만 표준 에 따 르 면 strict 모델 은 strict 가 아 닌 완전 부분 집합 입 니 다.
strict 모드 는 도대체 무슨 뜻 입 니까?많은 학생 들 이 strict 모델 을 사용 하 는 것 은 좋 은 코드 스타일 을 강제로 사용 하 는 것 이 라 고 생각 합 니 다. 제 의견 은 strict 는 좋 은 스타일 의 코드 가 아니 라 효율 적 인 코드 라 는 것 입 니 다.strict 모드 를 사용 하여 컴 파일 러 는 변 수 를 메모리 주소 로 최적화 하 는 능력 을 가지 게 되 었 다.
구체 적 으로 제한 하 다
eval 에서 변 수 를 설명 할 수 없습니다. 성명 의 함 수 는 전역 으로 변 할 것 입 니 다.
var 정 의 는 함수 급, if, for, while, switch 등에 서 만 var 정의 가 있 을 수 없습니다.
with 문 구 를 사용 할 수 없습니다.
arguments. callee 를 사용 할 수 없습니다.
일반 함수 호출 중 this 는 null 입 니 다.
읽 기 전용 속성 을 변경 하려 고 시도 하면 이상 을 던 집 니 다.
delete 실패 시 이상 던 지기
arguments 는 더 이상 형 삼 과 연결 되 지 않 습 니 다.
함수 에 동명 인자 가 있 을 수 없습니다.
사용 하 는 방법 은 strict 로 설명 하 는 것 입 니 다. 이 성명 은 문자열 표현 식 (비 strict 모드 를 호 환 하기 위해) 입 니 다. 예 를 들 어
strict 성명 은 'use strict' 와 'use strict' 일 뿐 전의, 문자열 단행 을 포함 한 어떠한 변경 도 strict 성명 으로 간주 되 지 않 습 니 다.
'use strict';
eval("var a=1;")
alert(a);
이 곳 의 strict 성명 으로 인해 코드 전체 가 strict 모드 로 바 뀌 었 고 비 strict 모드 를 사용 할 수 없습니다.
strict 도 함수 단계 에 작용 할 수 있 습 니 다. John Resig 의 제안 은 좋 습 니 다.
// strict ...
(function(){
"use strict";
// strict
})();
// strict ...
2. 배열
배열 의 변화 가 적지 않 습 니 다. 사용 하기에 매우 편리 한 확장 이 있 습 니 다.
Array. prototype. index Of, Array. prototype. lastIndex Of 정방 향 찾기 와 역방향 찾기, 이 건 할 말 이 없어 요. 이름 만 봐 도 뭐 하 는 지 알 아 요.
Array 의 집합 작업 은 줄곧 달 학우 들 의 사랑 을 받 아 왔 는데, 이 제 는 마침내 표준 이 되 었 다.
Array. prototype. every: 한 배열 의 모든 요소 가 특정한 조건 의 수리 논리 에 부합 되 는 지 확인 합 니 다.
var arr = [2,9,4,5,3,7];
var greater5 = arr.every(function(e,i){return e>5}); // 5
var smaller10 = arr.every(function(e,i){return e<10}); // 10
alert([greater5,smaller10]);
Array. prototype. some: 한 배열 에 특정한 조건 의 수리 논리 에 부합 되 는 요소 가 존재 하 는 지 확인 합 니 다.
<script>
var arr = [2,9,4,5,3,7];
var smaller5 = arr.some(function(e,i){return e<5}); // 5
var greater10 = arr.some(function(e,i){return e>10}); // 10
alert([smaller5 ,greater10]);
</script>
Array. prototype. foreach: 이게 그냥 옮 겨 다 니 는 거 예요.
Array. prototype. map: 한 배열 의 모든 요소 에 함 수 를 실행 하고 모든 반환 값 을 하나의 배열 로 되 돌려 줍 니 다.
<script>
var arr = [2,9,4,5,3,7];
var smaller5 = arr.map(function(e,i){return e<5}); // 5
alert(smaller5);
</script>
Array. prototype. filter: filter 는 하나의 배열 에서 조건 에 맞 는 요 소 를 선택 하지만 원래 의 배열 은 바 뀌 지 않 습 니 다.
<script>
var arr = [2,9,4,5,3,7];
var smaller5 = arr.filter(function(e,i){return e<5}); // 5
alert(smaller5);
</script>
반복 작업
Array. prototype. reduce 와 Array. prototype. reduceRight 는 교체 작업 을 제공 합 니 다.
생각해 보 세 요. Array. prototype. foreach 로 배열 의 모든 요 소 를 어떻게 구 합 니까?어쨌든 외부 변 수 를 사용 해 야 합 니 다.Array. prototype. reduce 가 더 잘 어 울 려 요.
<script>
var arr = [2,9,4,5,3,7];
var sum = arr.reduce(function(sum,e,i){return sum+e;}); // 5
alert(sum);
</script>
3.Function.prototype.bind
대부분의 JSer 에 게 Function. prototype. bind 는 낯 설 지 않 습 니 다. 이 prototype. js 의 유명한 함 수 는 마침내 표준 의 일부분 이 되 었 고 더욱 좋 은 내부 실현 방식 을 가지 게 되 었 습 니 다.용법 은 여전 하 다
<script>
var f = function(){ return this.a + this.b}.bind({a:1,b:2});
alert(f());
</script>
4.String.prototype.trim
이것 은 바로 편리 합 니 다. 문자열 양쪽 의 빈 칸 을 제거 합 니 다.
alert(" ".trim());
5. Date. now () 는 새로운 함수 로 현재 time stamp 를 가 져 옵 니 다.
이것 은 아주 작은 변동 입 니 다. 실제 new Date (). getTime () 에 해당 합 니 다.
<script>
alert([Date.now(),new Date().getTime()]);
</script>
6. 프로 토 타 입 프로 그래 밍
Object. getPrototypeOf 는 대상 의 원형 (주의, 하나의 "대상" 의 원형, 함수 의 prototype 속성, 즉 표준 에서 말 한 [prototype]]) 을 얻 을 수 있 습 니 다. 이 함수 의 역할 은 대체적으로 SpiderMonkey 의 에 해당 합 니 다.proto__속성, 차이 점 은 이 함수 가 낮은 이름 으로 오염 되 었 고 set 할 수 없습니다.
<script>
var klass = function() {}
klass.prototype = {a:10};
var obj = new klass();
var proto= Object.getPrototypeOf(obj)
alert(proto == klass.prototype);
alert(proto.hasOwnProperty("a"));
</script>
Object. create 는 원형 생 성 대상 을 지정 할 수 있 습 니 다. 효 과 는 대략 같 습 니 다.
function create(proto)
{
var klass = function(){} ;
klass.prototype = proto;
return new klass;
}
Object. create 의 두 번 째 매개 변 수 는 새로운 대상 에 추 가 된 속성 입 니 다. 세 번 째 조 를 참고 하 십시오.
재 미 있 는 것 은 우리 가 마침내 원형 체인 '깨끗 한' 대상 을 만 들 수 있다 는 것 이다. 모든 대상 이 Object. prototype 을 계승 할 필요 가 없다.
<script>
var obj=Object.create(null);
alert(obj.toString);
</script>
7. 속성 조작
Object. getOWn Property Names 는 대상 의 모든 속성 명 으로 구 성 된 배열 을 가 져 올 수 있 습 니 다. 셀 수 없 는 속성 을 포함 하여 이전 for in 의 대체 품 입 니 다.
<script>
alert(Object.getOwnPropertyNames(Object));
</script>
Object. defineProperty 는 새로운 속성 을 정의 하 는 방식 입 니 다. 이전에 직접 값 을 부여 하 는 것 보다 속성의 접근 성, 매 거 성 을 잘 제어 할 수 있 습 니 다. 여러분 이 기대 해 온 getter 와 setter 도 이 를 실현 하여 정식 적 으로 표준 이 되 었 습 니 다.
속성 만 읽 는 예:
<script>
var obj = {a:1};
Object.defineProperty(obj,"b",{value: 42, writable: false, configurable: true})
alert(obj.b);
obj.b = 10; //
alert(obj.b);
</script>
getter 와 setter 의 예
<script>
var a=10,b;
var obj = {x:1};
Object.defineProperty(obj,"c",{get:function(){return a+b}, set:function(v){b=v}});
obj.c = 3;
alert(obj.c);
</script>
매 거 할 수 없 는 속성 (나중에 Array 를 확장 하면 놀 라 지 않 아 도 됩 니 다):
<script>
var obj = {a:1,c:3,d:4};
Object.defineProperty(obj,"b",{value: 42, writable: false, configurable: true, enumrable:false});
for(var p in obj)
{
alert(p);
}
</script>
Object. getOwnProperty Descriptor 로 대상 의 속성 을 가 져 올 수 있 는 "속성"
<script>
alert(JSON.stringify(Object.getOwnPropertyDescriptor([],"length")));
</script>
한 번 에 여러 속성 을 정의 하 는 것 도 지원 합 니 다. Object. defineProperties 는 쓸모 가 없습니다.
8. JSON 지원
JSON 대상 은 Math 와 유사 하지만 사실은 네 임 스페이스 의 역할 입 니 다. 실제 함수 JSON. stringify 와 JSON. parse 만 2 개 있 습 니 다.
<script>
var jsonStr = JSON.stringify({a:10});
alert(jsonStr);
var obj = JSON.parse("{\"a\":10}");
alert(obj.a);
</script>
Date 대상 도 관련 방법 toJSON 을 추 가 했 습 니 다. Date. now () 처럼 빠 른 것 일 뿐 입 니 다.
<script>
alert([JSON.stringify(new Date),(new Date).toJSON()]);
</script>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Vue.js의 v-for로 분할 할당의 v-for 지시어로 과 같은 것을 하고 싶었습니다만, 「Vue.js 분할 대입」이나 「v-for 분할 대입」과 같이 검색해도 히트하지 않고 , 영어에서 "Vue.js Destructuring assignment"...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.