Javascriptの4つの関数の呼び出し方法

934 ワード

説明を簡単にするために、まず関数を作成します.function showmsg(){ console.log(this);}このオブジェクトを印刷する役割もありますし、何を指すのか分かりやすいです.
一、直接呼び出しshowmsg();結果:Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…} 直接呼び出しの場合、その中のthisはトップのオブジェクトwindowであることが分かります.
二、コンストラクタとして呼び出されるvar obj = new showmsg();結果:showmsg {} 呼び出し後、タイプと関数の同名のオブジェクトが作成されました.thisはこの対象を指す.
三、方法として呼び出すvar obj = {showmsg: showmsg};obj.showmsg();結果:Object {showmsg: function}その中のthisは、そのバインディングされたオブジェクトです.
四、function.callshowmsg.call({});結果:Object {} コールの最初のパラメータは何ですか?中のthisは何ですか?パラメータを送る必要があれば、後に付けばいいです.また、これはバインディングしていないだけで呼び出すことができます.
また、直接呼び出しは以下に相当します.showmsg.call(null);最初のパラメータがnullであれば、中のthisは最上階のオブジェクトwindowです.
コンストラクターとしての呼び出しは、var obj = {};obj.__proto__ = showmsg;showmsg.call(obj);