當前位置:
                    首頁 >
                            前端技术
>                            javascript
>内容正文                
                        
                    javascript
JavaScript对象的创建之构造函数
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                JavaScript对象的创建之构造函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                通過構造函數的方式創建和基于工廠的創建類似,最大的區別就是函數的名稱就是類的名稱,按照java的約定,第一個字母大寫。
使用構造函數創建對象時,在函數內部是通過this關鍵字來完成屬性的定義。
function Person(name, age){this.name = name;this.age = age;//帶來的問題是所有的對象都會為該行為分配空間this.say = function(){ //注意:say也是Person的一個屬性alert(this.name + "-->" + this.age);} }//通過new Person來創建對象 var p1 = new Person("Leon",22); var p2 = new Person("Ada",32); p1.say(); p2.say(); alert(typeof p1); //object//使用構造函數的方式可以通過以下方式來檢測對象的類型 alert(p1 instanceof Person); //true alert(p1.say == p2.say); //false 由于方法是定義在類中的,所有這兩個say不是一樣的?
使用構造函數創建所帶來的第一個問題就是每一個對象都會存在一個方法的拷貝,如果對象的方法很多的話,空間的占有率就會大大增加。
?
如何改進?可以將函數放在全局變量中定義,這樣可以讓類中的行為/方法指向同一個函數。
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將行為設置為全局的行為,如果將所有的方法都設計成全局函數的話,這個函數就可以被window調用,此時就破壞了對象的封裝性,
而且如果某個對象有大量的方法,就會導致整個代碼中充斥著大量的全局函數,這樣將不利于開發。
?
轉載于:https://www.cnblogs.com/luogankun/p/3954297.html
總結
以上是生活随笔為你收集整理的JavaScript对象的创建之构造函数的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Android 关于ListView中按
- 下一篇: helloworld讲解cocos2d-
