日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

浅谈Javascript中的函数重载实现

發布時間:2023/12/18 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈Javascript中的函数重载实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

其它面向對象語言如Java的一個常見特性是:能夠根據傳入的不同數量量或類型的參數,通過“重載”函數來發揮不同的功用。但是這個特性在Javascript中并沒有被直接支持,可是有很多辦法實現這一功能。

不管何種面向對象語,函數重載必須依賴兩件事情,分別是:
1)判斷傳入參數數量的能力
2)判斷傳入參數類型的能力

第1件事情:Javascript判斷傳入參數數量

Javascript的每個函數都帶有一個僅在這個函數范圍內作用的變量——arguments,它是一個包含所有傳給函數的參數的偽數組。為什么是偽數組?—— 你不能修改它,也不能用push來添加新元素等。但是你可以訪問其中的元素,并且同時具有.length屬性。有了length屬性,我們就可以很方便的知道函數傳入了幾個參數。


function send( message, who ) {
if( arguments.length >= 2 ) {
console.log("你對" + who + "說:" + message);
}
else {
console.log("你對大家說:" + message);
}
}


第2件事情:Javascript判斷傳入的參數類型

如果我們在函數中并沒有提供參數,那么message和who的值一定為'undefined'。我們可以使用typeof message = 'undefined'來判斷是否傳入了參數。


function send( message ) {
if( typeof message === 'undefined' ) {
console.log("ERROR:錯誤的信息內容");
}
else {
console.log("你說:" + message);
}
}


javascript中的類型檢查我常常用兩種方法來判斷:

方法1:typeof 變量 == '類型名'。如下:

var x = 123;

typeof x == 'number' //true

x = '123';

typeof x == 'string' //true

但是,對于Array和Object對象,typeof之后的值是一樣的,都為Object。即 typeof [] == type new Object(),如此當我們想要判斷一個對象是否為數組或我們自定義的對象時,這種方法就顯得有點不夠好了。

方法2:利有構造函數來判斷變量類型( 變量.constructor == 構造函數)

var num = 1, str = 'abcd', arr = [], obj = {}, tf = true, f = function(){};

用typeof對它們分別進行求值后,得到的結果分別是:number、string、 object、 object、 boolean、 function

如果分別調用它們的構造函 數,得到的結構分別是:Number、String、Array、Object、Boolean、Function

?

了解了上面兩件事情(變量個數、變量類型)之后,我們就可以創造出屬于自己的Javascript重載函數了。

本文只起拋磚引入的作用,具體如何利用,全靠個人發揮。

?

轉載于:https://www.cnblogs.com/mrweb/archive/2013/02/01/2888366.html

總結

以上是生活随笔為你收集整理的浅谈Javascript中的函数重载实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。