您好,登錄后才能下訂單哦!
今天小編給大家分享一下javascript構造方法的缺點有哪些的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
JavaScript構造方法的缺點是每次實例化一個對象,都會把屬性和方法復制一遍;如果實例之間有相同的方法,雖然構造函數中定義的屬性和方法是可以訪問的,但是每個實例都被復制了,這樣會造成系統資源的浪費。
本教程操作環境:windows10系統、javascript1.8.5版、Dell G3電腦。
優點就是能夠通過instanceof識別對象,缺點是每次實例化一個對象,都會把屬性和方法復制一遍
function CreateObj(uName) { this.userName = uName; this.showUserName = function () { return this.userName; } } var obj1 = new CreateObj('ghostwu'); var obj2 = new CreateObj('衛莊'); console.log( obj1.showUserName === obj2.showUserName ); //false
從以上執行結果,可以看出obj1.showUserName和obj.showUserName不是同一個【在js中,引用類型比較的是地址, 函數是一種引用類型】,而是存在兩個不同
的內存地址,因為每個對象的屬性是不一樣的,這個沒有什么問題,但是方法執行的都是一樣的代碼,所以沒有必要復制,存在多份,浪費內存.這就是缺點
擴展知識
構造函數:如用函數用來初始化(使用new運算符)一個新建的對象,我們稱之為構造函數(constructor)
function Person(){ this.name = "zqq"; this.age = 28; } var p = new Person();
當以new調用構造函數(執行var p = new Person())時,函數內部會發生以下情況:
1.創建一個空對象
var p = {};
2.this變量指向對象p
Person.call(p)
3.p繼承了構造函數Person()的原型
p.__proto__ = Person.prototype
4.執行構造函數Person()內的代碼
構造函數和普通函數的區別:
1.構造函數使用new關鍵字調用;普通函數不用new關鍵字調用;
var p = new Person(); var p = Person();
2.構造函數內部可以使用this關鍵字;普通函數內部不建議使用this,因為這時候this指向的是window全局對象,這樣無意間就會為window添加了一些全局變量或函數
在構造函數內部,this指向的是構造出來的新對象
在普通函數內部,this指向的是window全局對象
3.構造函數默認不用return返回值;普通函數一般都有return返回值
構造函數會默認返回this,也就是新的實例對象
普通函數如果沒有return值的話,返回undefined
如果使用了return,那返回值會根據return值的類型而有所不同
以上就是“javascript構造方法的缺點有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。