摘要:定義類的種方法工廠方法構造函數方法原型方法大家可以看到這種方法有缺陷,類里屬性的值都是在原型里給定的。組合使用構造函數和原型方法使用最廣將構造函數方法和原型方法結合使用是目前最常用的定義類的方法。
JavaScript定義類的4種方法 工廠方法
function creatPerson(name, age) { var obj = new Object(); obj.name = name; obj.age = age; obj.sayName = function() { window.alert(this.name); }; return obj; }構造函數方法
function Person(name, age) { this.name = name; this.age = age; this.sayName = function() { window.alert(this.name); }; }原型方法
function Person() { } Person.prototype = { constructor : Person, name : "Ning", age : "23", sayName : function() { window.alert(this.name); } };
大家可以看到這種方法有缺陷,類里屬性的值都是在原型里給定的。
組合使用構造函數和原型方法(使用最廣)function Person(name, age) { this.name = name; this.age = age; } Person.prototype = { constructor : Person, sayName : function() { window.alert(this.name); } };
將構造函數方法和原型方法結合使用是目前最常用的定義類的方法。這種方法的好處是實現了屬性定義和方法定義的分離。比如我可以創建兩個對象person1和person2,它們分別傳入各自的name值和age值,但sayName()方法可以同時使用原型里定義的。
JavaScript實現繼承的3種方法 借用構造函數法(又叫經典繼承)function SuperType(name) { this.name = name; this.sayName = function() { window.alert(this.name); }; } function SubType(name, age) { SuperType.call(this, name); //在這里借用了父類的構造函數 this.age = age; }對象冒充
function SuperType(name) { this.name = name; this.sayName = function() { window.alert(this.name); }; } function SubType(name, age) { this.supertype = SuperType; //在這里使用了對象冒充 this.supertype(name); this.age = age; }組合繼承(最常用)
function SuperType(name) { this.name = name; } SuperType.prototype = { sayName : function() { window.alert(this.name); } }; function SubType(name, age) { SuperType.call(this, name); //在這里繼承屬性 this.age = age; } SubType.prototype = new SuperType(); //這里繼承方法
組合繼承的方法是對應著我們用‘組合使用構造函數和原型方法’定義父類的一種繼承方法。同樣的,我們的屬性和方法是分開繼承的。
總結以上就是常見的JavaScript中面向對象編程的幾種實現,歡迎大家補充與指正。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107389.html
摘要:事件中屬性等于。響應的狀態為或者。同步在上會產生頁面假死的問題。表示聲明的變量未初始化,轉換為數值時為。但并非所有瀏覽器都支持事件捕獲。它由兩部分構成函數,以及創建該函數的環境。 1 介紹JavaScript的基本數據類型Number、String 、Boolean 、Null、Undefined Object 是 JavaScript 中所有對象的父對象數據封裝類對象:Object、...
摘要:的類與繼承的類與一般的面向對象語言有很大的不同,類的標識是它的構造函數,下面先定義一個類顯然我們可以看出這兩個函數是不同的,雖然它們實現了相同的功能。利用構造函數來繼承上面的方法子類顯然無法繼承父類的原型函數,這樣不符合我們使用繼承的目的。 javascript的類與繼承 javascript的類與一般的面向對象語言有很大的不同,類的標識是它的構造函數,下面先定義一個類 var ...
showImg(https://segmentfault.com/img/remote/1460000007103938?w=391&h=247); 文章最初發表于我的個人博客非典型性程序猿 對于剛接觸JAVA或者其他面向對象編程語言的朋友們來說,可能一開始都很難理解面向對象的概念以及類和對象的關系。筆者曾經帶過一個短期培訓班教授java入門基礎,在最后結束課程的時候,還有很多同學不太理解面向對象...
摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經到來了,總結過去的 2017,相信小伙們一定有很多收獲...
閱讀 3444·2021-09-08 10:46
閱讀 1180·2019-08-30 13:17
閱讀 2357·2019-08-30 13:05
閱讀 1199·2019-08-29 15:29
閱讀 2882·2019-08-29 11:31
閱讀 533·2019-08-26 12:13
閱讀 1532·2019-08-26 11:42
閱讀 1817·2019-08-23 18:37