日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript对象的创建之构造函数

發(fā)布時(shí)間:2024/4/15 javascript 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript对象的创建之构造函数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

通過構(gòu)造函數(shù)的方式創(chuàng)建和基于工廠的創(chuàng)建類似,最大的區(qū)別就是函數(shù)的名稱就是類的名稱,按照java的約定,第一個(gè)字母大寫。

使用構(gòu)造函數(shù)創(chuàng)建對象時(shí),在函數(shù)內(nèi)部是通過this關(guān)鍵字來完成屬性的定義

function Person(name, age){this.name = name;this.age = age;//帶來的問題是所有的對象都會為該行為分配空間this.say = function(){ //注意:say也是Person的一個(gè)屬性alert(this.name + "-->" + this.age);} }//通過new Person來創(chuàng)建對象 var p1 = new Person("Leon",22); var p2 = new Person("Ada",32); p1.say(); p2.say(); alert(typeof p1); //object//使用構(gòu)造函數(shù)的方式可以通過以下方式來檢測對象的類型 alert(p1 instanceof Person); //true alert(p1.say == p2.say); //false 由于方法是定義在類中的,所有這兩個(gè)say不是一樣的

?

使用構(gòu)造函數(shù)創(chuàng)建所帶來的第一個(gè)問題就是每一個(gè)對象都會存在一個(gè)方法的拷貝,如果對象的方法很多的話,空間的占有率就會大大增加

?

如何改進(jìn)?可以將函數(shù)放在全局變量中定義,這樣可以讓類中的行為/方法指向同一個(gè)函數(shù)。

function Person(name, age){this.name = name;this.age = age;this.say = say; }function say(){alert(this.name + "-->" + this.age); }var p1 = new Person("Leon",22); var p2 = new Person("Ada",32); p1.say(); p2.say();alert(p1 instanceof Person); //true alert(p1.say == p2.say); //true

將行為設(shè)置為全局的行為,如果將所有的方法都設(shè)計(jì)成全局函數(shù)的話,這個(gè)函數(shù)就可以被window調(diào)用,此時(shí)就破壞了對象的封裝性

而且如果某個(gè)對象有大量的方法,就會導(dǎo)致整個(gè)代碼中充斥著大量的全局函數(shù),這樣將不利于開發(fā)。

?

轉(zhuǎn)載于:https://www.cnblogs.com/luogankun/p/3954297.html

總結(jié)

以上是生活随笔為你收集整理的JavaScript对象的创建之构造函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。