>  기사  >  웹 프론트엔드  >  JavaScript의 문제를 심층적이고 이해하기 쉽게 심층적으로 분석

JavaScript의 문제를 심층적이고 이해하기 쉽게 심층적으로 분석

零到壹度
零到壹度원래의
2018-04-02 16:30:261360검색

이 글은 JavaScript의 심층 분석과 그 문제점에 대해 자세히 설명합니다. 내용이 꽤 좋습니다. 도움이 필요한 친구들에게 도움이 되기를 바랍니다.

1. 인수를 통해 얻은 것입니다.

2.arguments는 배열과 유사한 객체이고 프로토타입은 Array.prototype이 아니므로 조인과 같은 배열 메서드가 없습니다.

3.foo(1,2), 인수[2]는 바인딩을 잃습니다. 특정 관계,

foo(x,y,z){
arguments[1]=12  //y=12
arguments[2]=13;//z仍然未定义
}
foo(1,2);

그러나 엄격 모드인 경우 인수는 항상 전달된 매개변수의 복사본이므로 실제 매개변수를 수정할 수 없으며 인수.calle도 사용이 금지됩니다.

4.

this.x=9;
    var module={
        x:81,
        getX:function(){
            console.log(this.x);
        }
    };
    module.getX();
    var getX=module.getX;//将module的属性赋给getX变量
    getX();//这时候的this应该指向全局变量
    //为了理解,个人认为也可以看做getX=function(){return this.x;} getX()
    var boundGetX=getX.bind(module);//绑定module对象
    boundGetX();

5.bind에는 커링(currying) 기능이 있어서 일부 매개변수를 바인딩한 다음 나머지 매개변수만 전달하면 됩니다.

function add(a,b,c){
    console.log(a+b+c);
   }
    var func=add.bind(undefined,100);//this暂时是undefined
    func(1,2);
    var func2=func.bind(undefined,200);//注意这里是func
    func2(10);

new에서는 바인드가 무시됩니다. 반환된 것은 프로토타입이 새 생성자의 프로토타입 속성인 빈 개체입니다(반환된 개체가 없는 경우)

function foo(){
        this.a=100;
        return this.b;
    }
    var func=foo.bind({b:2});
    console.log(func());//2
    var o=new func();
    console.log(o);//foo {a: 100}

6.bind 메서드 시뮬레이션(지금은 따로 남겨두기)


관련 권장 사항:

간단하고 쉬운 JavaScript

간단하고 이해하기 쉬운 JavaScript의 첫 입문

간단하고 이해하기 쉬운 JavaScript(고급)

위 내용은 JavaScript의 문제를 심층적이고 이해하기 쉽게 심층적으로 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.