js的函数有哪几种调用形式?
fn(arg1, arg2, ...)
fn.call(thisArg, arg1, arg2, ...)
fn.apply(thisArg, [arg1, arg2, ...])
其中,call
和 apply
使得函数内的 this 被绑定到 thisArg
上。
同时可以使用 fn.bind(thisArg, ...)
来产生绑定到某个 this 的函数变体。
直接调用 fn()
自调用 (function())();
做为对象的属性调用 obj.fn()
new Xxx(),构造函数调用
function fn(){}
fn()
let obj = {fn:function(){}};
obj.fn()
new fn()
fn.call() || fn.apply()
如果是问函数自执行的方式有哪些呢?
// 1
(func (){
})()
//...
// 1. 全局调用
function fn(args){}
fn(args)
// 2. 作为对象的属性,以及作为构造函数 new 调用
Obj.prototype.fn = function(args){}
const obj = new Obj()
obj.fn(args)
// 3. call/apply/bind
fn1.call(this, arg1,arg2,...)
fn2.apply(this, [arg1, arg2, ...])
fn3 = fn1.bind(this)
fn3(arg1, arg2, ...1)
这道题主要是想考察什么了
还有 eval
大法
Most helpful comment
function fn(){}
fn()
let obj = {fn:function(){}};
obj.fn()
new fn()
fn.call() || fn.apply()