- JavaScript Function 對象屬性和方法
- JavaScript Function 為第一等對象,它有屬性和方法,它也可以被調用
- Function 屬性
屬性 | 描述 |
---|---|
arguments | 注意: 此處 arguments 為 Function 內部本地變量 |
caller | 返回調用當前 Function 的 Function |
constructor | 返回創建該對象的構造函數 |
length | 返回 Function 定義參數各數 |
prototype | 返回創建該對象 Function 的 Prototype 對象 |
- Function 方法
方法 | 描述 |
---|---|
Function() | 構造函數構造一個新的 Function |
apply() | 調用當前 Function,可同時改變函數內的 this 指向,Function 參數以數組或 arguments 對象形式傳入 |
bind() | 創建一個 this 指向固定的函數 |
call() | 調用當前 Function,可同時改變函數內的 this 指向,函數參數一個個分別傳入 |
toString() | 返回定義該 Function 對項的字符串 |
valueOf() | 返回 Function 對象本身 |
- JavaScript Function 調用模式
- 函数体内声明的变量、函数参数、来自外部的闭包变量。 此外还有两个:this和arguments。
- this:在面向对象程序设计中非常重要,而它的值在JavaScript中取决于调用模式。 JavaScript中的函數有 4 種調用模式:
- Method Invocation Pattern (方法調用)
- Function Invocation Pattern (函數調用)
- Constructor Invocation Pattern (構造函數調用)
- Apply Invocation Pattern (Apply 調用)
- arguments:為一个类数组变量(array like),拥有 length 属性并可以取下标, 它存着所有参数构成的有序数组。 在JavaScript中,函数调用与函数签名不一致(个数不正确、类型不正确定) 时不会产生运行时错。少了的参数会被置为undefined,多了的参数会被忽略。
- Method Invocation Pattern (方法調用模式)
- 方法本身也是函数,但是方法不能單獨調用,而是通過一個對象引導調用:對象與方法(參數)
- this 表是引導方法的對象
- Function Invocation Pattern (函數調用模式)
- 单独独立调用的就是函数:函数名(参数)
- 任何自调用函数都是函数模式
- this表示全局变量
- Constructor Invocation Pattern (構造函數調用)
- 需要使用new关键字引导调用
- new 是一个运算符, 专门用来申请创建对象, 创建出来的对象传递给构造函数的 this
- return返回值
- - 如果不写return语句,那么构造函数默认返回this
- - 如果构造函数中写上return语句,并且紧跟的是 **基本数据类型** (`return 123;`),则忽略返回属性。
- - 如果构造函数中写上return语句,并且紧跟的是 **引用类型** 那么构造函数返回引用类型数据,忽略 **this**
- Apply Invocation Pattern (Apply 調用模式)
- 不同环境下的不同调用模式(有统一的一种格式,可以实现函数模式与方法模式)
- 语法(call与apply功能完全一样,区别在于参数不同)
- REF:
- http://www.cnblogs.com/z1476740372/p/6261300.html
- https://rainsoft.io/6-ways-to-declare-javascript-functions/
- http://harttle.com/2016/02/03/js-function-invocation.html
- http://www.jianshu.com/p/edc623f06e18
- JavaScript Function 对象的属性和方法
- http://www.jianshu.com/p/edc623f06e18
- http://harttle.com/2016/02/03/js-function-invocation.html
- http://www.cnblogs.com/z1476740372/p/6261300.html
沒有留言:
張貼留言