国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript中的 object 和 function小結

2019-11-20 09:15:00
字體:
來源:轉載
供稿:網友

在學習過傳統的面向對象語言后,如 java c++,轉學 javascript 卻有點不適應,特別是 javascript 中所謂的 object(對象) function(函數),有時候會被搞暈。于是乎簡單整理了下面的一些概念性的東西,方便學習和理解,會結合一點 java面向對象的知識加以說明。

先了解幾個概念:

1.首先 Object 在 ECMAScripe 中是指什么,在 ECMAScripe 中有5種簡單數據類型:Undefined,Null,Boolean,Number,String. 還有一種復雜數據類型,那就是Object.

2.引用類型---java中的 類 的概念

引用類型的值 --- java中對象的概念

3.函數 ---- java 中方法的概念

4.var --- 申明變量的一個操作符,因為 js 的變量是松散類型的,所謂松散就是可以用來保存任何數據,變量僅僅用來表示一個占位符而已,所以變量也不必指定 什么 String ,int ,直接var 就可以了,注意對象 可以用var 聲明.

5.Object(), 是什么 --- java中 Object 的 構造方法 , js 中 Object 的 構造函數。

Object

js 是可以動態的添加屬性和方法的。
比如創建一個 Object 實例

var obj = new Object();

變量 obj 就是 new Object() 的 對象。
接下來:

var obj = new Object();obj.name = 'Zeng';obj.age = 12;obj.fun = function () {  console.log(this.name+this.age);}

但 這樣封裝性不太好,所以比較經常使用的是對象字面量表示法

var obj = {  name:'Zeng',  age:12,  fun:function () {    console.log(this.name+this.age);  }}obj.fun(); // 打印出: Zeng12

對象屬性的訪問:

1,采用  中括號
console.log(obj["name"]);

2,采用  點 , 建議采用此方式
console.log(obj.name );

function

函數對于任何語言來說都是重要的一部分,函數是 js的叫法,你也可以理解為就是 java 的 方法 ,c 語言的 函數,都一樣的。 不過在申明和使用上, js 的函數 可很大不同。

函數的一個示例:

function fun() {   return "例子";}console.log(fun()); // 輸出 : ‘例子'

還可以這樣:

var fun = function() {  return "使用表達式創建函數"};console.log(fun()); // 輸出 : "使用表達式創建函數"

上面例子你會注意到函數沒有函數名,只有一個變量名 fun ,表達式尾部還有一個 ;分號,
你可以把它當作聲明一個變量的表達式就好理解了,聲明其它變量是這么寫的:

var name = "Zeng"; // 有變量名 ,還有 分號

來一個帶參數的例子:

function fun() {   return arguments[0] + arguments[1] + arguments[2];}console.log(fun("這是","一個","例子")); // 輸出 :“這是一個例子”

是不是有點奇怪,首先我創建的函數沒有帶參數的,在調用的時候有給參數,在函數里面也能獲得參數并返回。

其實這里是要說明一點,js 函數不介意傳遞進來幾個參數,也不在乎參數是什么類型!原因是函數內部接收參數是用一個數組來儲存的!

數組也就是 上面的 arguments , 數組當然不介意你傳幾個參數進來,有參數我加一,沒參數我就是 null 。

咱們可以利用這個特性做個例子:

模仿方法的重載--利用參數個數的不同執行不同反應

function fun() {  if(arguments.length == 1){    return arguments[0]*10;  }  if(arguments.length == 2){    return (arguments[0]+arguments[1])*10;  }  return 10;}console.log(fun(11,111)); // 返回 1220 !!!!

沒有重載:
上面例子是模仿函數的重載,為什么要模仿呢,我自己創建幾個不同參數的函數不久可以了。

function fun( num1) {  return "只有一個參數的函數"}function fun( num1,num2) {  return "有兩個參數的函數";}console.log(fun(11)); // 輸出 “有兩個參數的函數”

明明調用的是帶一個參數的函數,執行的確是帶兩個參數的函數。原因:js定義了兩個相同名字的函數,該名字只屬于后定義的函數!!! 所以在 js 中沒有重載 這一特性。

函數名是指針:

var fun = function(num1,num2) {  return num1+num2;};var new_fun = fun;fun = null; // 將 函數 置 nullconsole.log(new_fun(10,20)); //輸出 :30console.log(fun(10,20)); //拋出異常 :fun is not a function

可看出盡管 fun = null; 但在此之前 var new_fun = fun; 也就是 指針也指向了 new_fun 了,所以 new_fun () 函數還能執行,并且函數體沒有置 null

函數也可以作為值來使用:

function add(fun,num) {  return fun(num);}function add_10(num) {  return num+10;}console.log(add(add_10,200)); // 輸出 : 210

可以這么解釋:

function add( 函數  ,  參數  ) {  return  函數 (  傳遞過來的參數 );}

函數的 arguments.callee
這是一個遞歸的示例

function fun(num) {  if(num<=1){    console.log(num );    return 1 ;  }else {    console.log(num );    return num * arguments.callee(num-1);  }}console.log(fun(3)); // 輸出 6

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴塘县| 天峻县| 宣汉县| 济宁市| 汉源县| 青岛市| 错那县| 邵阳县| 新乐市| 龙岩市| 吐鲁番市| 葵青区| 永德县| 隆回县| 兰西县| 大英县| 新化县| 海盐县| 邢台县| 武平县| 五指山市| 蒙城县| 云南省| 霍林郭勒市| 鄂伦春自治旗| 托克逊县| 西峡县| 西丰县| 靖安县| 义马市| 高碑店市| 芜湖市| 阿巴嘎旗| 垦利县| 镇赉县| 宜川县| 龙江县| 龙江县| 怀远县| 通海县| 长宁县|