Function
Function 作为构造函数用来创建一个新的 Function 对象.
概述
详见从Function入手原型链. Function 用来创建函数对象, 而 Function 本身也是函数, 所以有一个让很多人困扰的地方.
1 | Object.getPrototypeOf(Function) === Function.prototype // true |
原型方法
Function.prototype.toString()
描述 :
返回一个表示当前函数源代码的字符串.
语法 :
function.toString()
在内置函数或由 Function.prototype.bind 返回的函数上调用该方法, 则有:
1 | String.toString() |
普通函数调用该方法, 则有:
1 | (function() {}).toString() |
非 Function 对象调用该方法, 会抛出 TypeError.
1 | Function.prototype.toString.call({}) |
Function.prototype.apply()
描述 :
为调用的函数指定 this 值, 即 this 的执行上下文, 并以数组的形式传入参数.
语法 :
function.apply(thisArg, argArray)
thisArg
: 用于改变函数体内部 this 指向的 context. 当 argArray 为 undefined 或 null 时, thisArg 将替换成全局对象. 为基本类型值时, 将会被包装成相应的对象. 否则将不会做任何改变.argArray
: 数组或类数组对象. argArray 里的元素将逐个放入参数列表中. 若检测 argArray 不是对象, 将会抛出 TypeError 错误.
1 | const man = { |
Function.prototype.call()
描述 :
为调用的函数指定 this 值, 即 this 的执行上下文, 并以列表的形式传入参数.
语法 :
function.call(thisArg[ , arg1 [ , arg2, …, argN]])
thisArg
: 用于改变函数体内部 this 指向的 context. 当 argArray 为 undefined 或 null 时, thisArg 将替换成全局对象. 为基本类型值时, 将会被包装成相应的对象. 否则将不会做任何改变.argN
: 入参将从左到右的顺序加入到参数列表中.
1 | function Person(name, age) { |
Function.prototype.bind()
描述 :
创建一个新的绑定函数, 为函数指定 this 值, 即 this 的执行上下文, 并以列表的形式传入参数.
语法 :
function.bind(thisArg[ , arg1 [ , arg2, …, argN]])
thisArg
: 调用绑定函数时作为this参数传递给目标函数的值.argN
: 当目标函数被调用时,预先添加到绑定函数的参数列表中的参数.
1 | for(var i = 0; i <= 3; i++) { |