원래 JS에서 금지해야 할 쓰기
블록 레벨 함수
엄격한 모드에서는 ES6 이전에 사용을 금지해야 합니다.ES6부터 사용할 수 있습니다. 함수의 역할 영역은 이 함수를 설명하는 블록 내부입니다.비엄격한 모드에서는 사용을 금지해야 한다.
if(true) {
function test() { //
console.log(1);
}
}
test();
대상의 프로토타입 원형을 직접 수정합니다
브라우저는 원형을 최적화하여 실례를 호출하기 전에 대상의 방법을 위해 메모리 위치를 미리 계획합니다.프로토타입 원형을 직접 수정할 수 없습니다.다음 두 가지 방법 모두 사용을 금지해야 한다
Object를 사용합니다.setPrototypeOf 원형 수정
function a(){}
a.prototype = {
a_prop: "a val"
};
function b(){}
var proto = {
b_prop: "b val"
};
Object.setPrototypeOf(
proto, a.prototype
);
b.prototype = proto;
var test = new b;
console.log(test.a_prop); // a val
console.log(test.b_prop); // b val
객체를 직접 수정하는 __proto__ 속성
function a(){}
a.prototype = {
a_prop: "a val"
};
function b(){}
var proto = {
b_prop: "b val",
__proto__: a.prototype // b __prototype__
};
b.prototype = proto;
var test = new b;
console.log(test.a_prop); // a val
console.log(test.b_prop); // b val
with
with 사용법:
var a = {
p1: 1,
p2: 2
}
with (a) {
p1 = 3;
}
console.log(a.p1);
with 사용을 금지해야 합니다. 예를 들면:
function a(arg1, arg2) {
with (arg2){
console.log(arg1); // arg2 arg1
}
}
var arg2 = {arg1:1}
a("arg1", arg2)
callee
arguments.callee는 현재 실행 중인 함수를 나타냅니다.
function a(arg1) {
if (arg1 > 1) {
return arg1 * arguments.callee(arg1 - 1);
}
else {
return 1;
}
}
console.log(a(3)); // 6
함수가 자신을 호출해야 할 때,arguments를 사용하는 것을 금지해야 합니다.callee (), 함수 이름을 통해 이 함수를 호출합니다.
function a(arg1) {
if (arg1 > 1) {
return arg1 * a(arg1 - 1); //
}
else {
return 1;
}
}
console.log(a(3)); // 6
caller
caller는 함수의 호출자를 표시하며 사용을 금지해야 합니다. 이 특성은 표준이 아닙니다.
function a() {
console.log(a.caller); // function b() { a(); }
}
function b() {
a();
}
b();
eval
eval()은 전송된 문자열 매개변수를 JavaScript 코드로 실행할 수 있습니다.
eval("var a = 1, b = 2; console.log(a+b)"); // 3
eval 사용 금지.eval은 일반 자바스크립트보다 느리게 실행됩니다. 브라우저가 자바스크립트를 최적화했기 때문입니다.eval 방법도 안전하지 않습니다. 호출자와 같은 권한으로 코드를 실행하고, eval () 이 호출될 때, 그 역할역도 노출되기 때문입니다.Function 으로 대체해야 합니다.
var a = new Function("a", "b", "console.log(a+b)")
a(1,2); // 3
이상은 원생 JS에서 금지해야 할 쓰기 방법에 대한 상세한 내용입니다. 원생 JS에서 금지해야 할 쓰기 방법에 대한 더 많은 자료는 저희 다른 관련 글을 주목해 주세요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JS 판단 수조 네 가지 실현 방법 상세그러면 본고는 주로 몇 가지 판단 방식과 방식 판단의 원리를 바탕으로 문제가 있는지 토론하고자 한다. 예를 들어 html에 여러 개의 iframe 대상이 있으면 instanceof의 검증 결과가 기대에 부합되지 않을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.