1. Object.defineProperty
var val = 1;
Object.defineProperty(window, 'a', { configurable: true, get: function() { console.log(`触发第${val}次get`); return val++ } }) if(a == 1 && a == 2 && a == 3) { console.log('yes!') } 触发第1次get 触发第2次get 触发第3次get yes!
2. toString valueOf () 메서드 ()
const b = {
i: 1,
toString: function () { return this.i++; } } if(b == 1 && b == 2 && b == 3) { console.log('Hello World!'); // Hello World! } const b = { i: 1, valueOf: function () { return this.i++; } } if(b == 1 && b == 2 && b == 3) { console.log('Hello World!'); // Hello World! }
암시 적으로 비교 원래 값과 객체 비교의 유형, 객체가 원래 유형의 값을 변환 한 다음 비교 될 경우, toString 또는 valueOf 메소드를 호출합니다. 원래의 형태로 변환 개체 값이 알고리즘은 객체가 반환되는 경우 다음, 첫 번째 통화의 valueOf 메소드입니다 다시 toString 메소드를 호출
3. array.join = array.shift
var a = [1,2,3];
a.join = a.shift;
console.log(a == 1 && a == 2 && a == 3);
a == 1 ,此时 a 返回的就是shift返回的第一个元素 1 ,比较完之后 a = [2,3]
a == 2 ,此时 a 返回的就是shift返回的第一个元素 2 ,比较完之后 a = [3]
a == 3 ,此时 a 返回的就是shift返回的第一个元素 3 ,比较完之后 a = []
배열 객체, 배열 toString 메소드는 () 배열 있으며, toString 각 요소 문자열을 반환 (쉼표로 구분) () 메소드 커넥터 컴포넌트 가입 호출하여 값을 반환.
4.Proxy
VAR의 A는 = 새로운 프록시 (I {0 }, { 얻을 : (대상 이름) ? => === Symbol.toPrimitive 이름은 ()> = ++ 타겟 [이름] : target.i을 }) CONSOLE.LOG (a == 1 && == 2 && == 3);
5. Symbol.toPrimitive
// 다른 용액 된 toString ES6 당량이다 Symbol.toPrimitive을 사용 / valueOf은 {(I ++ (I) => () =>) (0 [Symbol.toPrimitive] A =하자 )}; CONSOLE.LOG (a == 1 && == 2 && == 3);
6. 특별 지정
var에 A = ㅤ 1. ; var에 A = 2 ; var에 A =을 ㅤ 3. , IF (.. ㅤ 1 && == == == 2 && ㅤ 3 ) { 을 console.log ( "! 왜 거기 안녕하세요" ) } / / 송출 된 ㅤ A = 1]. // 송출 된 A = 2] // . 송출 된 ㅤ A = 3; // https://stackoverflow.com/questions/48270127/can-a-1-a-2-a-3- - 투 - 더 평가 - 이제까지 #에 충실 // 여기에 세 가지 다른 변수, 첫 번째와 세 번째 공백 문자가 아닌 공간 전후이며, 유니 코드 FFA0가 // 참고 이상한 간격의 if 문. 그것은 = = 반 폭 한국어입니다. 이 유니 코드 공백 문자이지만, ECMAScript를 하나의 공간으로 해석 할 수 없습니다 - 유효한 식별자를 의미합니다. 그러므로 세 개의 완전히 다른 변수 절반 폭 A는, 절반 폭은 한국 앞에는이며, 한국 후에 첨가되어있다.
7. 디지털 변수 이름
var a = 1; var ᅠ1 = a; var ᅠ2 = a; var ᅠ3 = a; console.log( a ==ᅠ1 && a ==ᅠ2 && a ==ᅠ3 );
당신이 달성하기 위해 다른 방법이있는 경우, 구현 요에 귀하의 의견을 남길 수 있습니다!