1. 程式人生 > >Javascript 中 Function的屬性與方法

Javascript 中 Function的屬性與方法

Javascript 中 Function 的屬性與方法

1. Function 建構函式的屬性與方法

1. Function.arguments (不建議使用)

代表傳入函式的實參,是一個類陣列物件,這個屬性已經廢棄,當前普遍使用的是:在 函式中直接使用 arguments 物件,如果使用 es6 建議使用 ... 操作符獲取傳入實參

function a(arg1, arg2) {
    console.log(arguments);
    console.log(a.arguments);
}

a(1, 2, 3, 4, 5);
/*
   { '0': 1, '1': 2, '2': 3, '3': 4, '4': 5 }
   { '0': 1, '1': 2, '2': 3, '3': 4, '4': 5 }
*/
// es6 function b(...args) { console.log(args); } b(1, 2, 3, 4); // [ 1, 2, 3, 4 ]

2. Function.length

指明函式的形參個數

function a(arg1, arg2) {}

function b(...args) {}

const c = function(arg1) {};

const d = () => {};

const e = function(arg1 = 22, arg2) {};

const e2 = function(arg1, arg2 = 333)
{
}; console.log(a.length); // 2 console.log(b.length); // 0 ...args 形式的形參個數為 0 console.log(c.length); // 1 console.log(d.length); // 0 console.log(e.length); // 0 設定預設值後 形參個數只計算到含有預設值的引數前一個 console.log(e2.length); // 1 const f = function fff(arg1, arg2, arg3) { console.log('fff', fff.length); // fff 3 console.log('f'
, f.length); // f 3 }; f();

3. Function.name

返回函式宣告的名稱

function a() {}

console.log(a.name); // a

const b = new Function();

console.log(b.name); // anonymous

const c = function() {};

console.log(c.name); // c

const d = function dd() {};

console.log(d.name); // dd

const obj = {
    e: function() {}
};

console.log(obj.e.name); // e

function f() {}
const ff = f.bind(null);

console.log(ff.name); // bound f  繫結函式的名稱前加上"bound "

2. Function.prototype Funciton 的原型物件或者例項上的屬性與方法

1. bind()

用於建立一個新的函式,當被呼叫時,將其函式的 this 關鍵字指向 .bind(thisArg, ...) 的第一個引數,並且 bind() 方法的其餘引數都會在新函式呼叫時作為引數優先傳遞給被繫結的方法

.bind() 最簡單的用法就是,建立一個函式,使得這個函式無論怎麼呼叫都有同樣的 this 值

function initialFn(...args) {
    console.log(args);
    console.log(this.name);
}

const obj = {
    name: 'obj name'
};

this.name = 'global name';

// 繫結 this 並且傳入引數
const newFn = initialFn.bind(obj, 'bind1', 'bind2');

// 執行時傳入引數
newFn('normal1', 'normal2');
/*
   [ 'bind1', 'bind2', 'normal1', 'normal2' ] // bind 的引數會優先傳入
   obj name // this 指向是傳入的第一個引數
*/
const globalFn = initialFn.bind(this, 'bind1', 'bind2');

globalFn('global1', 'global2');
/*
   [ 'bind1', 'bind2', 'global1', 'global2' ]
   global name
*/

2. call() apply()

兩個方法都是呼叫一個函式,其具有一個指定的 this,call()apply() 非常相似,不同之處在於提供的引數的方式 apply 使用引數陣列而不是一組引數列表,call()方法接受的是若干個引數的列表,返回值是是呼叫方法的返回值

function initialFn(...args) {
    console.log(args);
    console.log(this.name);
}

const obj = {
    name: 'obj name'
};

this.name = 'global name';

initialFn.call(obj, 'call1', 'call2');
/*
   [ 'call1', 'call2' ]
   obj name
*/
initialFn.call(this, 'call1', 'call2');
/*
   [ 'call1', 'call2' ]
   global name
*/

initialFn.apply(obj, ['apply1', 'apply2']);
/*
   [ 'apply1', 'apply2' ]
   obj name
*/

initialFn.apply(this, ['apply1', 'apply2']);
/*
   [ 'apply1', 'apply2' ]
   global name
*/

3. bind() apply() call() 三者區別

  • 三個函式都可以用來繫結函式的 this 指標
  • bind() 方法的返回值是一個繫結過 this 並且預先傳入引數的函式,這個函式要再次呼叫才會執行
  • apply() call() 兩個方法繫結函式後就會執行這個函式,返回值是被繫結函式的返回值
  • apply() call() 兩者只是傳入引數方式不同

4. toString()

返回一個表示當前函式原始碼的字串

function initialFn(...args) {
    console.log(args);
    console.log(this.name);
}

console.log(initialFn.toString());
/*
   function initialFn(...args) {
      console.log(args);
      console.log(this.name);
   }
*/

參考

相關推薦

DevGridView——屬性方法

一般設定為:gridView1.Appearance.HeaderPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; //列頭居中 gridView1.Appearance.Row.

javaScript私有屬性方法

javaScript並沒有特殊的語法來表示私有、保護、或公共屬性和方法,在這一點上與 java或其他語言是不同的,JavaScript中所有物件的成員是公用的: var myobj={ mypop:1, getProp:function(){

JavaScriptevent屬性方法

1. type:事件的型別,如onlick中的click; 2. srcElement/target:事件源,就是發生事件的元素; 3. button:宣告被按下的滑鼠鍵,整數,1代表左鍵,2代表右鍵,4代表中鍵,如果按下多個鍵,酒把這些值加起來,所以3就代表左右鍵同時按下;

Python 簡明教程 --- 20,Python 類屬性方法

> **微信公眾號:碼農充電站pro** > **個人主頁:** > **與客戶保持良好的關係可以使生產率加倍。** > —— Larry Bernstain **目錄** ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/202006271223363.png?#pic

Javascript Function屬性方法

Javascript 中 Function 的屬性與方法 1. Function 建構函式的屬性與方法 1. Function.arguments (不建議使用) 代表傳入函式的實參

JavaScript 那些關於座標和距離的屬性方法

一 前言 在前端開發中總會遇到各種各樣需要使用或計算座標和距離的情況,但是這些屬性和方法眾多,全部熟練地記下來並非是一件易事,大多隻能現查,耗費不少時間精力,於是便有了整理記錄的想法,即加深了印象,又方便隨時查閱。 二 window 物件 瀏覽器裡面,window 物件(注意,w為小寫)指當前的瀏覽器視窗。

淺談javascript的callapply方法

分享 .cn ima his 修改 images 一個數 作用 undefine   call方法與apply方法都是為了改變函數體內部this的指向。   call方法與apply方法,這二者的作用完全一樣,只是接受參數的方式不太一樣。   apply()方法:  

javascript的call.apply方法是針對function本身定義的內容,並不能將

ons con ack min span 文章 apply call 發現 最近研究了js的繼承,看了幻天芒的文章http://www.cnblogs.com/humin/p/4556820.html#3947420,明白了最好是使用apply或call方法來實現繼承。 但

javascript(function(){})($)$(function)的區別

之前一直沒弄清楚這兩者的區別,只是發現多個(function(){})($)之間定義的方法是可以互通的,以為這個會比較好,實際運用中發現並不是這麼簡單的。 1. (function(){}())與(function(){})() 這兩種寫法,都是一種立即執

Javascript的Date.now() 方法Date.UTC() 方法 ,Date.parse() 方法

1. Date.now() 方法返回自1970年1月1日 00:00:00 UTC到當前時間的毫秒數。 語法:無引數 var timeInMs = Date.now(); 描述: now()方法返回自1970年1月1日 00:00:00 UTC到當前時間的毫秒數,型別

JavaScriptString物件常見方法屬性

JavaScript String物件簡介 在JavaScript,基本資料型別有Number型、String型、Boolean型、Undefined型、Null型、Function型等。 String物件就是和基本資料型別中的String型別相對應的Jav

Python的特殊屬性方法

繼承 lex 函數 它的 不可變 第一個 異常 直接 contains 模塊的特殊屬性 __doc__ 模塊的說明文檔 __all__ 指明模塊希望被使用的屬性、類和方法 __file__ 模塊所在路徑 類的特殊屬性 __slots__ 限制類的實

javaScriptwindow物件的方法屬性

window物件是客戶端JavaScript最高層物件之一,只要開啟瀏覽器視窗,不管該視窗中是否有開啟的網頁,當遇到BODY、FRAMESET或FRAME元素時,都會自動建立window物件的例項。另外,該物件的例項也可由window.open()方法建立。

簡單說 JavaScript的tostring( ) valueOf( )方法

說明 所有的物件都繼承有toString() 和 valueOf() 方法,物件到字串,物件到數字的轉換,會通過呼叫待轉換物件的這兩個方法中的一個來完成。 解釋 toString( )方法的作用是: 返回一個反映這個物件的字串,而很多類都定義

javascript陣列常用的方法屬性

前言 在javascript中,陣列是一種非常重要的資料型別,我們時常會和它打交道,最近在開發專案中頻繁的使用到陣列,但是自己對陣列的眾多方法已經是非常模糊了,為了方便自己以後能夠更好的使用陣列中的屬性和方法,在此記錄一下。 陣列常用的屬性和方法 常用屬性 Array.length:返回陣列的

javascript的undefinedis not defined

ole 返回 對象 javascrip efi {} define var bsp 1. var a; console.log(a); 這裏打印的是undefined; 2. console.log(b); 這裏瀏覽器會報錯,b is not defined; 3. var

Javascript的applycall詳解

選項 this 模式 div sun fun object 面向 傳遞     JavaScript中有一個call和apply方法,其作用基本相同,但也有略微的區別。  一、方法定義   1、call 方法   語法:call([thisObj[,arg1[, arg2[

JavaScript的nullnudefined

設置 同時 scrip script ogl 效果 報告 object 數字 null和undefined 作者總結: null在進行數字運算時可以轉換成0,而undefined會被轉換成NaN(歷史原因); 另外用typeof檢測null會返回object對象類型 註

javascript的addEventListenerattchEvent

不支持 func 瀏覽器 元素 由於 ie9 bsp apt 指定元素 1、addEventListener 該方法用於向指定元素添加事件句柄 瀏覽器的支持情況為chrome1.0、ie9+、fireFox1.0、opera7.0 該方法包含三個參數event, fu

JavaScript location.host location.hostname 的區別

word ace base cati net item spa oca 端口 JavaScript 中,大多數情況下,我們不會發現 location.host 與 location.hostname 的區別,因為大多數情況下,我們的網頁用的是 80 端口。 他們的區別: