日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Java工厂构造函数参数,javascript 面向对象之构造函数、工厂方式、字面量

發(fā)布時間:2023/12/10 javascript 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java工厂构造函数参数,javascript 面向对象之构造函数、工厂方式、字面量 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是面向?qū)ο缶幊?/p>

面向?qū)ο蟮挠⑽娜Q:Object Oriented Programming , 簡稱OOP

首先我們要先了解面向過程的編程思想, 就是代碼從上到下都沒有封裝的意思,某寫代碼裸露在外、沒有模塊化、代碼雜亂無章的寫法. 并且還不好維護(hù),也不便于后期二次修改

面向?qū)ο蟮木幊趟枷? 通俗的說就是要具備代碼好維護(hù)、代碼重用性高、耦合度低、高內(nèi)聚、模塊化、便于修改

名詞解釋:

高內(nèi)聚: 指一個軟件模塊是由相關(guān)性很強(qiáng)的代碼組成,只負(fù)責(zé)一項任務(wù),也就是常說的單一責(zé)任原則。

低耦合: 指讓每個模塊盡可能的獨立完成某個特定的子功能。

面向?qū)ο蟮闹饕攸c:

抽象:抓住核心問題, 去掉相關(guān)性不強(qiáng)的代碼, 把類似一樣的功能性代碼放在一起、

[把這個功能所需要的相同功能代碼抽取出來,然后進(jìn)行封裝]

封裝:只能通過對象來訪問方法 [提高可維護(hù)性]

繼承:從已有對象上繼承出新的對象 [提高代碼重用性]

多態(tài):讓同一個[接口] 被不同的對象所繼承或者實現(xiàn),從而產(chǎn)生不同的處理方式

js是一門基于對象的語言

js是一門解釋型的語言

js是一門腳本語言、弱類型語言!

分析什么是對象?

對象:具有特征和行為或者說 有屬性和方法, 具體特指的某一個事物

屬性 就是變量 表示一個對象的狀態(tài) 對象下面的變量就叫做:屬性

方法 就是函數(shù) 表示一個對象的行為過程 對象下面的函數(shù)就叫做:方法

javascript創(chuàng)建對象的三種方式

1.調(diào)用系統(tǒng)的構(gòu)造函數(shù)創(chuàng)建對象 創(chuàng)建對象也叫實例化對象, Object是系統(tǒng)的構(gòu)造函數(shù)

//語法

var 變量名 = new Object();

如何添加對象的屬性和方法

添加屬性: 如何添加屬性?

var 變量名 = new Object();

變量名.屬性名=值;

添加方法: 如何添加方法?

var 變量名 = new Object();

變量名.方法名=function(){

..代碼段...

}

function 函數(shù)名(){

}

變量名.方法名=函數(shù)名;

案例:

var obj=new Object();

obj.name='張三';

obj.age=33;

obj.city='重慶';

obj.say=function(){

alert('張三說話了!');

}//歡迎加入Java開發(fā)交流君樣:909038429

console.log(obj);

這種創(chuàng)建方式的缺點是:

1.如果使用這種方式創(chuàng)建了多個對象、會產(chǎn)生對象不能分辨出到底屬于哪一個類型!

2.每創(chuàng)建 一個對象都需要new Object() 一次 耗費內(nèi)存空間、 不能一次性創(chuàng)建多個對象

小知識: 如何判斷某一個對象引用變量是不是屬于某一個類型?

語法: 對象引用變量名稱 instanceof 類名稱 返回true就是屬于這個類 返回false不屬于這種類型

this關(guān)鍵字的基本使用

在當(dāng)前的對象方法中,可以使用this關(guān)鍵字代表當(dāng)前對象

小知識: 訪問對象屬性和方法的另一種寫法: 對象[“屬性名”] 或 對象方法名

案例代碼如下:

var obj2=new Object();

obj2.name='李四';

obj2.age=66;

obj2.city='北京';

obj2.say=function(){

console.log('李四說話了');

console.log(this.name);

}

console.log(obj2["name"]);

obj2["say"]();

2.工廠方式與構(gòu)造函數(shù) 工廠方式也可以叫做封裝函數(shù)

優(yōu)點: 代碼復(fù)用性提升、不同的數(shù)據(jù)當(dāng)做參數(shù)進(jìn)行傳遞

自定義構(gòu)造函數(shù)創(chuàng)建對象

了解一下如何一次性創(chuàng)建多個對象?

案例代碼如下:

function createObject(username,age){

var obj=new Object();

obj.name=username;

obj.age=age;

obj.city='重慶';

obj.say=function(){

console.log(this.name+'的年齡是:'+this.age);

}//歡迎加入Java開發(fā)交流君樣:909038429

return obj;

}

var obj1=createObject('張三',23);

var obj2=createObject('李四',66);

obj1.say();

obj2.say();

工廠方法 方法2:自定義構(gòu)造函數(shù)創(chuàng)建對象, 自己定義一個構(gòu)造函數(shù),創(chuàng)建對象

優(yōu)點: 可以區(qū)分出對象引用屬于哪一類

案例代碼如下

//Person就是構(gòu)造函數(shù)

function Person(username,age,city){

this.name=username;

this.age=age;

this.city=city;

this.say=function(){

console.log(this.name+'的年齡是:'+this.age);

}

}

var obj1=new Person('張三',33,'北京市');

var obj2=new Person('李四',66,'重慶市');

obj1.say();

obj2.say();

小結(jié): 通過上面的案例可以小結(jié)出一個概念: 就是函數(shù)如果前面有new關(guān)鍵字,那么這個函數(shù)就是構(gòu)造函數(shù),否則就是一個普通函數(shù)

==在javascript中使用new關(guān)鍵字來修飾一個 普通函數(shù)的解答

系統(tǒng)做4件事情

1.首先這個函數(shù)就成為了 構(gòu)造函數(shù), 因為 new 后面跟一個函數(shù) 這樣的函數(shù)就叫構(gòu)造函數(shù)

2.在內(nèi)存中開辟一塊(申請一塊空閑的空間)空間,存儲創(chuàng)建的新對象

3.構(gòu)造函數(shù)中的this就設(shè)置為當(dāng)前的對象

4.就是說當(dāng)new寫在一個函數(shù)前面的時候、這個函數(shù)中的this就是創(chuàng)建出來的對象、并且函數(shù)的返回值直接默認(rèn)就是this了 隱式返回,可以使用如下代碼進(jìn)行測試得出結(jié)論

function Obj() {

}

//觀察返回值

console.log(Obj()); //undefined

console.log(new Obj()); //Obj {}

//所以this這個對象會返回, [ 這里的返回是自動的 無需在構(gòu)造函數(shù)中使用return]

5.如果有設(shè)置對象的屬性和方法就設(shè)置值

3.字面量的方式創(chuàng)建對象

json對象是創(chuàng)建對象的一種字面量表示形式

var 變量名 = { } //這就叫字面量方式創(chuàng)建對象

案例代碼

var obj={};

obj.name='張三';

obj.age=22;

obj.city='北京市';

obj.fn=function () {

console.log('我的名字叫'+this.name+' 我的年齡是:'+this.age+' 我在'+this.city+'生活和工作!');

}

obj.fn();

推薦寫法:

字面量優(yōu)化后的形式:其實就是json數(shù)據(jù)格式的形式 [推薦寫法]

案例代碼

var obj2={//歡迎加入Java開發(fā)交流君樣:909038429

name:'張三',

age:22,

city:'北京市',

fn:function () {

console.log(this);

console.log('我的名字叫'+this.name+' 我的年齡是:'+this.age+' 我在'+this.city+'生活和工作!');

}

};

obj2.fn();

注意: var obj =new Object() 與 var obj = { } 是完全一樣的 只是一個在內(nèi)存中的堆區(qū)中開空間 而另一個在棧區(qū)開辟空間

function Obj() {

}

var test=new Obj(); //在內(nèi)存中的堆區(qū)中開空間

console.log(test);

var json={}//在棧區(qū)開辟空間 用完即釋放

console.log(json);

總結(jié)

以上是生活随笔為你收集整理的Java工厂构造函数参数,javascript 面向对象之构造函数、工厂方式、字面量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。