亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

javascript中的 object 和 function

ormsf / 2632人閱讀

摘要:在學(xué)習(xí)過傳統(tǒng)的面向?qū)ο笳Z(yǔ)言后,如,轉(zhuǎn)學(xué)卻有點(diǎn)不適應(yīng),特別是中所謂的對(duì)象函數(shù),有時(shí)候會(huì)被搞暈。是可以動(dòng)態(tài)的添加屬性和方法的。不過在申明和使用上,的函數(shù)可很大不同。原因定義了兩個(gè)相同名字的函數(shù),該名字只屬于后定義的函數(shù)所以在中沒有重載這一特性。

在學(xué)習(xí)過傳統(tǒng)的面向?qū)ο笳Z(yǔ)言后,如 java c++,轉(zhuǎn)學(xué) javascript 卻有點(diǎn)不適應(yīng),特別是 javascript 中所謂的 object(對(duì)象) function(函數(shù)),有時(shí)候會(huì)被搞暈。于是乎簡(jiǎn)單整理了下面的一些概念性的東西,方便學(xué)習(xí)和理解,會(huì)結(jié)合一點(diǎn) java面向?qū)ο蟮闹R(shí)加以說明。

先了解幾個(gè)概念:
1.
首先 Object 在 ECMAScripe 中是指什么,在 ECMAScripe 中有5種簡(jiǎn)單數(shù)據(jù)類型:Undefined,Null,Boolean,Number,String. 還有一種復(fù)雜數(shù)據(jù)類型,那就是Object.

2.
引用類型---java中的 類 的概念
引用類型的值 --- java中對(duì)象的概念

3.
函數(shù) ---- java 中方法的概念

4.
var --- 申明變量的一個(gè)操作符,因?yàn)?js 的變量是松散類型的,所謂松散就是可以用來保存任何數(shù)據(jù),變量?jī)H僅用來表示一個(gè)占位符而已,所以變量也不必指定 什么 String ,int ,直接var 就可以了,注意對(duì)象 可以用var 聲明.

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

Object

js 是可以動(dòng)態(tài)的添加屬性和方法的。
比如創(chuàng)建一個(gè) Object 實(shí)例

var obj = new Object();

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

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

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

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

對(duì)象屬性的訪問:

1,采用  中括號(hào)
console.log(obj["name"]);
2,采用  點(diǎn) , 建議采用此方式
console.log(obj.name );

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

函數(shù)的一個(gè)示例:

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

還可以這樣:

var fun = function() {
    return "使用表達(dá)式創(chuàng)建函數(shù)"
};
console.log(fun()); // 輸出 : "使用表達(dá)式創(chuàng)建函數(shù)"

上面例子你會(huì)注意到函數(shù)沒有函數(shù)名,只有一個(gè)變量名 fun ,表達(dá)式尾部還有一個(gè) ;分號(hào),
你可以把它當(dāng)作聲明一個(gè)變量的表達(dá)式就好理解了,聲明其它變量是這么寫的:

var name = "Zeng";  // 有變量名  ,還有 分號(hào)

來一個(gè)帶參數(shù)的例子:

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

是不是有點(diǎn)奇怪,首先我創(chuàng)建的函數(shù)沒有帶參數(shù)的,在調(diào)用的時(shí)候有給參數(shù),在函數(shù)里面也能獲得參數(shù)并返回。
其實(shí)這里是要說明一點(diǎn),js 函數(shù)不介意傳遞進(jìn)來幾個(gè)參數(shù),也不在乎參數(shù)是什么類型!原因是函數(shù)內(nèi)部接收參數(shù)是用一個(gè)數(shù)組來儲(chǔ)存的!
數(shù)組也就是 上面的 arguments , 數(shù)組當(dāng)然不介意你傳幾個(gè)參數(shù)進(jìn)來,有參數(shù)我加一,沒參數(shù)我就是 null 。

咱們可以利用這個(gè)特性做個(gè)例子:

模仿方法的重載--利用參數(shù)個(gè)數(shù)的不同執(zhí)行不同反應(yīng)

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  ?。。?!

沒有重載:

上面例子是模仿函數(shù)的重載,為什么要模仿呢,我自己創(chuàng)建幾個(gè)不同參數(shù)的函數(shù)不久可以了。

function fun( num1) {
    return "只有一個(gè)參數(shù)的函數(shù)"
}
function fun( num1,num2) {

    return "有兩個(gè)參數(shù)的函數(shù)";
}
console.log(fun(11)); // 輸出 “有兩個(gè)參數(shù)的函數(shù)”

明明調(diào)用的是帶一個(gè)參數(shù)的函數(shù),執(zhí)行的確是帶兩個(gè)參數(shù)的函數(shù)。原因:js定義了兩個(gè)相同名字的函數(shù),該名字只屬于后定義的函數(shù)!??! 所以在 js 中沒有重載 這一特性。

函數(shù)名是指針:

var fun = function(num1,num2) {
    return num1+num2;
};

var new_fun = fun;
fun = null;  // 將 函數(shù) 置 null

console.log(new_fun(10,20)); //輸出 :30
console.log(fun(10,20)); //拋出異常 :fun is not a function

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

函數(shù)也可以作為值來使用:

function add(fun,num) {
    return fun(num);
}
function add_10(num) {
    return num+10;
}

console.log(add(add_10,200)); // 輸出 : 210

可以這么解釋:

function add(  函數(shù)   ,   參數(shù)   ) {

    return    函數(shù) (   傳遞過來的參數(shù)  );
}

函數(shù)的 arguments.callee

這是一個(gè)遞歸的示例

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/87834.html

相關(guān)文章

  • JavaScript 原型中的哲學(xué)思想

    摘要:而作為構(gòu)造函數(shù),需要有個(gè)屬性用來作為以該構(gòu)造函數(shù)創(chuàng)造的實(shí)例的繼承。 歡迎來我的博客閱讀:「JavaScript 原型中的哲學(xué)思想」 記得當(dāng)年初試前端的時(shí)候,學(xué)習(xí)JavaScript過程中,原型問題一直讓我疑惑許久,那時(shí)候捧著那本著名的紅皮書,看到有關(guān)原型的講解時(shí),總是心存疑慮。 當(dāng)在JavaScript世界中走過不少旅程之后,再次萌發(fā)起研究這部分知識(shí)的欲望,翻閱了不少書籍和資料,才搞懂...

    sugarmo 評(píng)論0 收藏0
  • JavaScript中的面向?qū)ο螅?em>object-oriented)編程

    摘要:對(duì)象在中,除了數(shù)字字符串布爾值這幾個(gè)簡(jiǎn)單類型外,其他的都是對(duì)象。那么在函數(shù)對(duì)象中,這兩個(gè)屬性的有什么區(qū)別呢表示該函數(shù)對(duì)象的原型表示使用來執(zhí)行該函數(shù)時(shí)這種函數(shù)一般成為構(gòu)造函數(shù),后面會(huì)講解,新創(chuàng)建的對(duì)象的原型。這時(shí)的函數(shù)通常稱為構(gòu)造函數(shù)。。 本文原發(fā)于我的個(gè)人博客,經(jīng)多次修改后發(fā)到sf上。本文仍在不斷修改中,最新版請(qǐng)?jiān)L問個(gè)人博客。 最近工作一直在用nodejs做開發(fā),有了nodejs,...

    JerryZou 評(píng)論0 收藏0
  • [譯] 為什么原型繼承很重要

    摘要:使用構(gòu)造函數(shù)的原型繼承相比使用原型的原型繼承更加復(fù)雜,我們先看看使用原型的原型繼承上面的代碼很容易理解。相反的,使用構(gòu)造函數(shù)的原型繼承像下面這樣當(dāng)然,構(gòu)造函數(shù)的方式更簡(jiǎn)單。 五天之前我寫了一個(gè)關(guān)于ES6標(biāo)準(zhǔn)中Class的文章。在里面我介紹了如何用現(xiàn)有的Javascript來模擬類并且介紹了ES6中類的用法,其實(shí)它只是一個(gè)語(yǔ)法糖。感謝Om Shakar以及Javascript Room中...

    xiao7cn 評(píng)論0 收藏0
  • JavaScript中的數(shù)據(jù)類型及其檢測(cè)

    摘要:中的數(shù)據(jù)類型及其檢測(cè)數(shù)據(jù)類型基本類型引用類型類型檢測(cè)只能檢測(cè)基本數(shù)據(jù)類型,對(duì)于還有一個(gè)用于檢測(cè)某個(gè)對(duì)象的原型鏈?zhǔn)欠癜硞€(gè)構(gòu)造函數(shù)的屬性適用于檢測(cè)對(duì)象,它是基于原型鏈運(yùn)作的屬性返回一個(gè)指向創(chuàng)建了該對(duì)象原型的函數(shù)引用,該屬性的值是哪個(gè)函數(shù)本身 JavaScript中的數(shù)據(jù)類型及其檢測(cè) 1. 數(shù)據(jù)類型 1.1 基本類型 Number String Boolean Null Undefin...

    Bryan 評(píng)論0 收藏0
  • 你是否理解js的ObjectFunction與原型鏈

    摘要:原型對(duì)象是由創(chuàng)建的,因此原型對(duì)象的構(gòu)造函數(shù)是構(gòu)造函數(shù)也可以是稱為對(duì)象,原型對(duì)象也就繼承了其生父構(gòu)造函數(shù)中的數(shù)據(jù),也同時(shí)繼承了原型對(duì)象的數(shù)據(jù)。當(dāng)然這條原型鏈中的數(shù)據(jù),會(huì)被還是還是這類構(gòu)造函數(shù)繼承,但是不會(huì)被這些繼承,他們不處于同一個(gè)鏈條上。 js中,F(xiàn)unction的本質(zhì)是什么?Object的本質(zhì)又是什么?js中有幾條原型鏈? showImg(https://segmentfault.c...

    itvincent 評(píng)論0 收藏0
  • 前端面試題 -- JavaScript (一)

    摘要:前言前兩天總結(jié)了一下方面的面試題傳送門,今天翻看了一些面試中常見的幾個(gè)問題只是一部分,會(huì)持續(xù)更新,分享給有需要的小伙伴,歡迎關(guān)注如果文章中有出現(xiàn)紕漏錯(cuò)誤之處,還請(qǐng)看到的小伙伴留言指正,先行謝過以下有哪些數(shù)據(jù)類型種原始數(shù)據(jù)類型布爾表示一個(gè)邏輯 前言 前兩天總結(jié)了一下HTML+CSS方面的面試題 (傳送門),今天翻看了一些 JavaScript 面試中常見的幾個(gè)問題(只是一部分,會(huì)持續(xù)更新...

    junnplus 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

ormsf

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<