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()