ECMAScript 4 제안에서는 이 기능이 ES4 사양에 추가될 것이라고 밝혔지만 나중에 ES4 토론 메일링 리스트 토론에서 이 제안이 폐기될 수 있습니다.
그러나 RegExp.prototype에 호출 및 적용 메서드를 추가하면 이러한 메서드를 유사하게 구현할 수 있습니다. 이는 기능적 디자인에 도움이 될 뿐만 아니라 함수와 정규식 모두에 유효한 오리 유형 코드의 구현을 가능하게 합니다. 이제 이러한 메서드를 추가해 보겠습니다.
RegExp.prototype.call = 함수(context, str) {
return this.exec(str)
}
RegExp.prototype.apply = 함수(context, args) {
return this.exec(args[0]);
}; 위의 두 가지 메서드는 컨텍스트 매개변수를 완전히 무시하며 null 또는 다른 개체를 컨텍스트로 제출할 수 있으며 유사하게 일반 exec 메서드를 가져옵니다. 반환 값. 위의 방법을 사용하면 어떤 상황에서도 정규식과 함수를 정상적으로 사용하는 것이 훨씬 쉬워집니다. 이와 같은 몇 가지 명백한 예는 JavaScript 1.6의 배열 반복에 유용합니다. 다음 필터, Every, Some 및 map 메소드는 여러 브라우저에서 실행될 수 있습니다.
if (!Array.prototype.filter) {
// 배열을 반환합니다. 제공된 필터 함수가 true를 반환하면 기존 배열의 요소를 반환합니다.
Array.prototype.filter = 함수(func, context) {
var results = []
for (var I = 0; I & lt; projecth; i) {
if (if i in this && func.call(context, this[i], i, this))
results.push(this[i])
}
결과 반환
}; >}
if (!Array.prototype.every) {
// 배열의 각 요소가 제공된 테스트 함수를 만족하면 true를 반환합니다.
Array.prototype.every = function (func, context) {
for (var i = 0; i < this.length; i ) {
if (i in this && !func.call( context, this[i], i, this))
return false;
}
return true
}
if (!Array.prototype.some);
// 배열의 요소 중 하나 이상이 제공된 테스트 함수를 만족하면 true를 반환합니다.
Array.prototype.some = function (func, context) {
for (var i = 0; i < this.length; i ) {
if (i in this && func.call(context) , this[i], i, this))
return true;
return false
}
if (!Array.prototype.map) {
// 기존 배열의 각 요소에 대해 제공된 함수를 호출한 반환 값인 배열을 반환합니다.
Array.prototype.map = function (func, context) {
var results = []
for (var i = 0; i < this.length; i ) {
if ( i in this)
results[i] = func.call(context, this[i], i, this);
}
return results
}; exec 메서드 true 및 false로 적절한 유형 변환을 사용하여 배열 또는 null 값을 반환합니다. 위 코드를 사용하면 ["a","b","ab","ba"].filter(/ ^a/ ), "a"로 시작하는 모든 값을 반환합니다: ["a","ab"].
실제로 Array.prototype.filter는 Firefox에서 구현되었습니다. 왜냐하면 exec의 간접 호출이 이미 이 브라우저에서 작동하고 있기 때문입니다. 그러나 필터가 RegExp.prototype.call 메소드를 추가하지 않으면 브라우저 간에 실행할 수 없습니다.
위 내용은 win7에서 cf가 전체화면을 할 수 없는 문제에 대한 해결책을 소개하고 있습니다. js에서 일반 함수를 호출하는 방법도 첨부되어 있는데, cf가 win7을 전체화면으로 할 수 없는 문제에 대한 해결책도 포함되어 있습니다. PHP 튜토리얼에 관심이 있는 분.