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

首頁 > 編程 > JavaScript > 正文

javascript 面向對象function詳解及實例代碼

2019-11-19 17:23:44
字體:
來源:轉載
供稿:網友

javascript 面向對象function詳解

    js中的函數有三種表示方式:

//函數的第一種表示方式:函數關鍵字的方式 function f1() {   alert("f1"); } //函數的第二種表示方式:函數字面量的方式 var f2 = function() {   alert("f2"); } //函數的第三種表示方式:構造函數的方式 var f3 = new Function('var a = 100; b = 200; return a+b;'); alert(f3());  

       函數的定義方式一般有以上三種,前兩種方式基本沒什么區別,第三種定義方式(Function()構造函數)每次執行時都解析函數主體,并創建一個新的函數對象。所以當在一個循環或者頻繁執行的函數中調用Function()構造函數的效率是非常低的。相反,函數字面量卻不是每次遇到都重新編譯的。一般不會采用第三種方式。

另外,分別執行alert(f1.constructor); alert(f2.constructor); alert(f3.constructor);都會出現同樣的效果,如下:

f1.constructor,f2.constructor,f3.constructor都是一個對象,為Function,這里可以這樣理解,這三個函數f1,f2,f3都是通過Function的形式產生的,所以他們的構造器就是Function,由此也可以推出這三種函數的產生方式其實內部原理是一樣的。

在JavaScript中,每個具有原型的對象都會自動獲得constructor屬性。對象的constructor屬性用于返回創建該對象的函數,也就是我們常說的構造函數。實際上,在js中,每一個function都是一個Function Object。

總結:

1、在js中一切皆對象;

2、在js中對象有一個屬性為constructor;

3、在js中,凡是函數都是構造器對象

另外,從面向對象的角度來理解,上面實例中f1是一個函數,同時它也是一個對象,constructor可以理解為它的一個屬性,并且這里可以利用該對象的constructor屬性找到它的構造函數。

可以為f1這個對象動態的添加屬性:

//給f1對象添加一個屬性為b,值為5 f1.b = 5; alert(f1.b); //給f1對象添加一個屬性為bb,bb為對象,值為var f2 = function() { alert("f2");} f1.bb = f2; alert(f1.bb); 

在js中,任何一個對象都有可能成為另一個對象的屬性。

一個對象可以動態的添加任何一個屬性,但是這個對象必須有值,不能是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 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凤翔县| 咸阳市| 潼关县| 邢台市| 宣化县| 巨野县| 阳江市| 西乌| 乳源| 特克斯县| 读书| 海晏县| 临武县| 化州市| 长沙县| 南汇区| 神木县| 铜陵市| 麟游县| 扎兰屯市| 华阴市| 怀柔区| 上饶县| 丽江市| 金华市| 天等县| 淮南市| 大名县| 黔西县| 元谋县| 旌德县| 灌南县| 舒兰市| 博客| 通化市| 始兴县| 鄯善县| 新疆| 闽侯县| 嘉禾县| 邵武市|