この記事では、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 の奥深くてわかりやすい問題を徹底分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。