2017年9月5日 星期二

[JavaScript] Function Pattern (待補)

  • 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

沒有留言:

張貼留言