ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript の奥深くてわかりやすい問題を徹底分析

JavaScript の奥深くてわかりやすい問題を徹底分析

零到壹度
零到壹度オリジナル
2018-04-02 16:30:261411ブラウズ

この記事では、JavaScript の詳細な分析とその問題点を簡単に説明します。この内容が、困っている人たちに役立つことを願っています

1。関数は引数を通じて取得できます。

2.arguments は配列のようなオブジェクトであり、プロトタイプは Array.prototype ではないため、join などの配列メソッドはありません。

3.foo(1,2)、arguments[2] はバインディングを失います。特定の関係、

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

しかし、厳密モードの場合、引数は常に渡されるパラメータのコピーであるため、実際のパラメータは変更できず、arguments.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にはいくつかのパラメータをバインドしてカリー化する機能があり、残りのパラメータを渡すだけで済みます

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ではbindは無視されることに注意してください。返されるのは、プロトタイプが新しいコンストラクターのプロトタイプ属性である空のオブジェクトです (返されたオブジェクトがない場合)

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。