99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

(2)——函數(shù)和對(duì)象的關(guān)系

2018-02-24 15:44 更新

上文(理解javascript原型和作用域系列(1)——一切都是對(duì)象)已經(jīng)提到,函數(shù)就是對(duì)象的一種,因?yàn)橥ㄟ^(guò)instanceof函數(shù)可以判斷。

var fn = function () { };
console.log(fn instanceof Object);  // true

對(duì)!函數(shù)是一種對(duì)象,但是函數(shù)卻不像數(shù)組一樣——你可以說(shuō)數(shù)組是對(duì)象的一種,因?yàn)閿?shù)組就像是對(duì)象的一個(gè)子集一樣。但是函數(shù)與對(duì)象之間,卻不僅僅是一種包含和被包含的關(guān)系,函數(shù)和對(duì)象之間的關(guān)系比較復(fù)雜,甚至有一點(diǎn)雞生蛋蛋生雞的邏輯,咱們這一節(jié)就縷一縷。

還是先看一個(gè)小例子吧。

function Fn() {
    this.name = '王福朋';
    this.year = 1988;
}
var fn1 = new Fn();

上面的這個(gè)例子很簡(jiǎn)單,它能說(shuō)明:對(duì)象可以通過(guò)函數(shù)來(lái)創(chuàng)建。對(duì)!也只能說(shuō)明這一點(diǎn)。

但是我要說(shuō)——對(duì)象都是通過(guò)函數(shù)創(chuàng)建的——有些人可能反駁:不對(duì)!因?yàn)椋?/p>

var obj = { a: 10, b: 20 };
var arr = [5, 'x', true];

但是不好意思,這個(gè)——真的——是一種——“快捷方式”,在編程語(yǔ)言中,一般叫做“語(yǔ)法糖”。

做“語(yǔ)法糖”做的最好的可謂是微軟大哥,它把他們家C#那小子弄的不男不女從的,本想圖個(gè)人見(jiàn)人愛(ài),誰(shuí)承想還得到處跟人解釋——其實(shí)它是個(gè)男孩!

話歸正傳——其實(shí)以上代碼的本質(zhì)是:

//var obj = { a: 10, b: 20 };
//var arr = [5, 'x', true];

var obj = new Object();
obj.a = 10;
obj.b = 20;

var arr = new Array();
arr[0] = 5;
arr[1] = 'x';
arr[2] = true;

而其中的 Object 和 Array 都是函數(shù):

console.log(typeof (Object));  // function
console.log(typeof (Array));  // function

所以,可以很負(fù)責(zé)任的說(shuō)——對(duì)象都是通過(guò)函數(shù)來(lái)創(chuàng)建的。

現(xiàn)在是不是糊涂了—— 對(duì)象是函數(shù)創(chuàng)建的,而函數(shù)卻又是一種對(duì)象——天哪!函數(shù)和對(duì)象到底是什么關(guān)系啊?

別著急!揭開(kāi)這個(gè)謎底,還得先去了解一下另一位老朋友——prototype原型。

本系列文章不打算動(dòng)輒幾千字的長(zhǎng)篇大論,咱們小步快跑,不至于看的太乏味。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)