您好,登錄后才能下訂單哦!
一、面向對象編程
1.面向過程與面向對象
1)面向過程:專注于如何解決一個問題的過程步驟,編程特點是由一個個函數(shù)去實現(xiàn)每一步的過程步驟,沒有類和對象的概念。
2)面向對象:專注于由哪一個對象來解決問題,編程特點是出現(xiàn)一個類,從類中拿到對象,由這個對象去解決具體問題。
對于調用者來說,面向過程需要調用者自己去實現(xiàn)各種函數(shù)。而面向對象,只需要調用者了解對象中具體方法的功能,不需要了解方法中的實現(xiàn)細節(jié)。
2.面向對象的三大特征
面向對象的三大特征繼承、封裝、多態(tài)。JS可以模擬實現(xiàn)繼承和封裝,但是無法模擬實現(xiàn)多態(tài),所以JS是一門基于對象的語言, 而不是傳統(tǒng)意義上的面向對象的語言。
3.類和對象的關系
1)類是抽象的,對象是具體的(類是對象的抽象化,對象是類的具體化)
2)類是一個抽象的概念,只能說類有屬性和方法,但是不能給屬性賦具體的。比如,人類有姓名,但是不能說人類的姓名叫什么。
二、Javascript對象的創(chuàng)建方法
1.var obj = {}//簡單對象plainObject 對象字面量/對象直接量
2.構造函數(shù)(特點:大駝峰式命名規(guī)則)
1)系統(tǒng)自帶的構造函數(shù)
var obj = new Object();//相當于var object = {}
2)自定義函數(shù)封裝
// 函數(shù)里面加參數(shù)才能使函數(shù)自定義,可以隨意改變函數(shù)中對應參數(shù)的數(shù)據(jù),生產對象的時候必須得new對象
function Car(color){ this.color=color; this.name = "BMW"; this.height = "1400"; this.lang = "4900"; this.weight = 1000; this.health = 100; this.run = function(){ this.health -- ; } }
var car = new Car("red");
3.對象構造函數(shù)的內部原理3步
1)在函數(shù)體最上面隱式的加上一個對象:var this = {}
2)執(zhí)行函數(shù)體中的內容
3)隱式的返回this對象
三、包裝類
1.原始值是不可能有屬性和方法(undefined、null、number、boolean、string)
2.有些原始值經(jīng)過包裝類之后,可以進行調用
var num=123;//不是對象
var num1=new Number(123);//是對象
3.隱式包裝類的過程如下
var num = 4; num.len = 3;//隱式發(fā)生轉換,新建一個數(shù)字對象,然后添加屬性并賦值,最后刪除這個對象,所以在執(zhí)行過程中沒有報錯 console.log(num.len);//再新建一個數(shù)字對象,添加屬性,所以最后輸出為undefined var str="abcd"; str.length=2; console.log(str.length); //輸出為4,在輸出時原始值str包裝類之后輸出的為new String('abcd').length,字符串自帶length屬性,所以輸出長度為4
以上就是js面向對象編程的詳細內容,更多請關注億速云其它相關文章!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。