日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

深入理解javascript原型和闭包(2)——函数和对象的关系

發(fā)布時間:2024/9/16 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入理解javascript原型和闭包(2)——函数和对象的关系 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

上文(理解javascript原型和作用域系列(1)——一切都是對象)已經提到,函數就是對象的一種,因為通過instanceof函數可以判斷。

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


對!函數是一種對象,但是函數卻不像數組一樣——你可以說數組是對象的一種,因為數組就像是對象的一個子集一樣。但是函數與對象之間,卻不僅僅是一種包含和被包含的關系,函數和對象之間的關系比較復雜,甚至有一點雞生蛋蛋生雞的邏輯,咱們這一節(jié)就縷一縷。
還是先看一個小例子吧。

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


上面的這個例子很簡單,它能說明:對象可以通過函數來創(chuàng)建。對!也只能說明這一點。
但是我要說——對象都是通過函數創(chuàng)建的——有些人可能反駁:不對!因為:

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


但是不好意思,這個——真的——是一種——“快捷方式”,在編程語言中,一般叫做“語法糖”。
做“語法糖”做的最好的可謂是微軟大哥,它把他們家C#那小子弄的不男不女從的,本想圖個人見人愛,誰承想還得到處跟人解釋——其實它是個男孩!
話歸正傳——其實以上代碼的本質是:

//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 都是函數:

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


所以,可以很負責任的說——對象都是通過函數來創(chuàng)建的。
現(xiàn)在是不是糊涂了—— 對象是函數創(chuàng)建的,而函數卻又是一種對象——天哪!函數和對象到底是什么關系啊?
別著急!揭開這個謎底,還得先去了解一下另一位老朋友——prototype原型。
本系列文章不打算動輒幾千字的長篇大論,咱們小步快跑,不至于看的太乏味。
?

總結

以上是生活随笔為你收集整理的深入理解javascript原型和闭包(2)——函数和对象的关系的全部內容,希望文章能夠幫你解決所遇到的問題。

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