摘要:定義類的種方法工廠方法構(gòu)造函數(shù)方法原型方法大家可以看到這種方法有缺陷,類里屬性的值都是在原型里給定的。組合使用構(gòu)造函數(shù)和原型方法使用最廣將構(gòu)造函數(shù)方法和原型方法結(jié)合使用是目前最常用的定義類的方法。
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; }構(gòu)造函數(shù)方法
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); } };
大家可以看到這種方法有缺陷,類里屬性的值都是在原型里給定的。
組合使用構(gòu)造函數(shù)和原型方法(使用最廣)function Person(name, age) { this.name = name; this.age = age; } Person.prototype = { constructor : Person, sayName : function() { window.alert(this.name); } };
將構(gòu)造函數(shù)方法和原型方法結(jié)合使用是目前最常用的定義類的方法。這種方法的好處是實(shí)現(xiàn)了屬性定義和方法定義的分離。比如我可以創(chuàng)建兩個(gè)對象person1和person2,它們分別傳入各自的name值和age值,但sayName()方法可以同時(shí)使用原型里定義的。
JavaScript實(shí)現(xiàn)繼承的3種方法 借用構(gòu)造函數(shù)法(又叫經(jīng)典繼承)function SuperType(name) { this.name = name; this.sayName = function() { window.alert(this.name); }; } function SubType(name, age) { SuperType.call(this, name); //在這里借用了父類的構(gòu)造函數(shù) 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(); //這里繼承方法
組合繼承的方法是對應(yīng)著我們用‘組合使用構(gòu)造函數(shù)和原型方法’定義父類的一種繼承方法。同樣的,我們的屬性和方法是分開繼承的。
總結(jié)以上就是常見的JavaScript中面向?qū)ο缶幊痰膸追N實(shí)現(xiàn),歡迎大家補(bǔ)充與指正。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/107389.html
摘要:事件中屬性等于。響應(yīng)的狀態(tài)為或者。同步在上會產(chǎn)生頁面假死的問題。表示聲明的變量未初始化,轉(zhuǎn)換為數(shù)值時(shí)為。但并非所有瀏覽器都支持事件捕獲。它由兩部分構(gòu)成函數(shù),以及創(chuàng)建該函數(shù)的環(huán)境。 1 介紹JavaScript的基本數(shù)據(jù)類型Number、String 、Boolean 、Null、Undefined Object 是 JavaScript 中所有對象的父對象數(shù)據(jù)封裝類對象:Object、...
摘要:前言自從進(jìn)入版本以來,開始全面地支持面向?qū)ο缶幊?。好了,進(jìn)入正題,面向?qū)ο蟮娜筇匦苑謩e是封裝性,繼承性以及多態(tài)性,使用面向?qū)ο箝_發(fā),讓我們的程序可維護(hù)以及擴(kuò)展性大大提高。 showImg(https://segmentfault.com/img/remote/1460000012257579?w=1920&h=1080); 前言 自從php進(jìn)入5.0版本以來,PHP開始全面地支持面向...
摘要:的類與繼承的類與一般的面向?qū)ο笳Z言有很大的不同,類的標(biāo)識是它的構(gòu)造函數(shù),下面先定義一個(gè)類顯然我們可以看出這兩個(gè)函數(shù)是不同的,雖然它們實(shí)現(xiàn)了相同的功能。利用構(gòu)造函數(shù)來繼承上面的方法子類顯然無法繼承父類的原型函數(shù),這樣不符合我們使用繼承的目的。 javascript的類與繼承 javascript的類與一般的面向?qū)ο笳Z言有很大的不同,類的標(biāo)識是它的構(gòu)造函數(shù),下面先定義一個(gè)類 var ...
showImg(https://segmentfault.com/img/remote/1460000007103938?w=391&h=247); 文章最初發(fā)表于我的個(gè)人博客非典型性程序猿 對于剛接觸JAVA或者其他面向?qū)ο缶幊陶Z言的朋友們來說,可能一開始都很難理解面向?qū)ο蟮母拍钜约邦惡蛯ο蟮年P(guān)系。筆者曾經(jīng)帶過一個(gè)短期培訓(xùn)班教授java入門基礎(chǔ),在最后結(jié)束課程的時(shí)候,還有很多同學(xué)不太理解面向?qū)ο?..
摘要:入門,第一個(gè)這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運(yùn)行在之上。它通過編輯類工具,帶來了先進(jìn)的編輯體驗(yàn),增強(qiáng)了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...
閱讀 3497·2021-09-08 10:46
閱讀 1192·2019-08-30 13:17
閱讀 2372·2019-08-30 13:05
閱讀 1214·2019-08-29 15:29
閱讀 2893·2019-08-29 11:31
閱讀 548·2019-08-26 12:13
閱讀 1543·2019-08-26 11:42
閱讀 1850·2019-08-23 18:37