javascript 面向?qū)ο骹unction詳解及實例代碼
javascript 面向?qū)ο骹unction詳解
js中的函數(shù)有三種表示方式:
//函數(shù)的第一種表示方式:函數(shù)關(guān)鍵字的方式
function f1() {
alert("f1");
}
//函數(shù)的第二種表示方式:函數(shù)字面量的方式
var f2 = function() {
alert("f2");
}
//函數(shù)的第三種表示方式:構(gòu)造函數(shù)的方式
var f3 = new Function('var a = 100; b = 200; return a+b;');
alert(f3());
函數(shù)的定義方式一般有以上三種,前兩種方式基本沒什么區(qū)別,第三種定義方式(Function()構(gòu)造函數(shù))每次執(zhí)行時都解析函數(shù)主體,并創(chuàng)建一個新的函數(shù)對象。所以當(dāng)在一個循環(huán)或者頻繁執(zhí)行的函數(shù)中調(diào)用Function()構(gòu)造函數(shù)的效率是非常低的。相反,函數(shù)字面量卻不是每次遇到都重新編譯的。一般不會采用第三種方式。
另外,分別執(zhí)行alert(f1.constructor); alert(f2.constructor); alert(f3.constructor);都會出現(xiàn)同樣的效果,如下:

f1.constructor,f2.constructor,f3.constructor都是一個對象,為Function,這里可以這樣理解,這三個函數(shù)f1,f2,f3都是通過Function的形式產(chǎn)生的,所以他們的構(gòu)造器就是Function,由此也可以推出這三種函數(shù)的產(chǎn)生方式其實內(nèi)部原理是一樣的。
在JavaScript中,每個具有原型的對象都會自動獲得constructor屬性。對象的constructor屬性用于返回創(chuàng)建該對象的函數(shù),也就是我們常說的構(gòu)造函數(shù)。實際上,在js中,每一個function都是一個Function Object。

總結(jié):
1、在js中一切皆對象;
2、在js中對象有一個屬性為constructor;
3、在js中,凡是函數(shù)都是構(gòu)造器對象
另外,從面向?qū)ο蟮慕嵌葋砝斫?,上面實例中f1是一個函數(shù),同時它也是一個對象,constructor可以理解為它的一個屬性,并且這里可以利用該對象的constructor屬性找到它的構(gòu)造函數(shù)。
可以為f1這個對象動態(tài)的添加屬性:
//給f1對象添加一個屬性為b,值為5
f1.b = 5;
alert(f1.b);
//給f1對象添加一個屬性為bb,bb為對象,值為var f2 = function() { alert("f2");}
f1.bb = f2;
alert(f1.bb);
在js中,任何一個對象都有可能成為另一個對象的屬性。
一個對象可以動態(tài)的添加任何一個屬性,但是這個對象必須有值,不能是null和undefined。
function Person() {
//do something
}
function P() {
//do something
}
function A() {
//do something
}
function B() {
//do something
}
Person.a = P;
Person.a.b = A;
Person.a.b.c = B;
Person.a.b.c.d = f2;
alert(Person.a.b.c.d); //正確,因為Person.a.b.c是有值的
alert(Person.a.b.c.d.e.f); //錯誤,不能為Person.a.b.c.d.e增加屬性f,因為Person.a.b.c.d.e是undefined
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
- JavaScript求一組數(shù)的最小公倍數(shù)和最大公約數(shù)常用算法詳解【面向?qū)ο?,回歸迭代和循環(huán)】
- JS 面向?qū)ο笾^承---多種組合繼承詳解
- JS面向?qū)ο缶幊淘斀?/a>
- 詳解JS面向?qū)ο缶幊?/a>
- 詳解JavaScript基于面向?qū)ο笾^承實例
- 詳解JavaScript基于面向?qū)ο笾^承
- 詳解JavaScript基于面向?qū)ο笾畡?chuàng)建對象(2)
- 詳解JavaScript基于面向?qū)ο笾畡?chuàng)建對象(1)
- js面向?qū)ο笾?、私有、靜態(tài)屬性和方法詳解
- JS Pro-深入面向?qū)ο蟮某绦蛟O(shè)計之繼承的詳解
- JAVASCRIPT THIS詳解 面向?qū)ο?/a>
- JS面向?qū)ο蟮某绦蛟O(shè)計相關(guān)知識小結(jié)
- JavaScript面向?qū)ο蟮某绦蛟O(shè)計(犯迷糊的小羊)
相關(guān)文章
兼容ie、firefox的圖片自動縮放的css跟js代碼分享
最近編輯反應(yīng),圖片有時候太大了,如果隱藏了,可能部分內(nèi)容別人就看不到了,如果手工設(shè)置圖片大小又太麻煩了,這里就提供一個方法讓也沒的圖片等比例縮放2013-08-08
使用webpack3.0配置webpack-dev-server教程
這篇文章主要介紹了使用webpack3.0配置webpack-dev-server教程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05
50行代碼實現(xiàn)Webpack組件使用次數(shù)統(tǒng)計
這篇文章主要介紹了50行代碼實現(xiàn)Webpack組件使用次數(shù)統(tǒng)計,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03

