javascript
Java工厂构造函数参数,javascript 面向对象之构造函数、工厂方式、字面量
什么是面向對象編程
面向對象的英文全稱:Object Oriented Programming , 簡稱OOP
首先我們要先了解面向過程的編程思想, 就是代碼從上到下都沒有封裝的意思,某寫代碼裸露在外、沒有模塊化、代碼雜亂無章的寫法. 并且還不好維護,也不便于后期二次修改
面向對象的編程思想: 通俗的說就是要具備代碼好維護、代碼重用性高、耦合度低、高內聚、模塊化、便于修改
名詞解釋:
高內聚: 指一個軟件模塊是由相關性很強的代碼組成,只負責一項任務,也就是常說的單一責任原則。
低耦合: 指讓每個模塊盡可能的獨立完成某個特定的子功能。
面向對象的主要特點:
抽象:抓住核心問題, 去掉相關性不強的代碼, 把類似一樣的功能性代碼放在一起、
[把這個功能所需要的相同功能代碼抽取出來,然后進行封裝]
封裝:只能通過對象來訪問方法 [提高可維護性]
繼承:從已有對象上繼承出新的對象 [提高代碼重用性]
多態:讓同一個[接口] 被不同的對象所繼承或者實現,從而產生不同的處理方式
js是一門基于對象的語言
js是一門解釋型的語言
js是一門腳本語言、弱類型語言!
分析什么是對象?
對象:具有特征和行為或者說 有屬性和方法, 具體特指的某一個事物
屬性 就是變量 表示一個對象的狀態 對象下面的變量就叫做:屬性
方法 就是函數 表示一個對象的行為過程 對象下面的函數就叫做:方法
javascript創建對象的三種方式
1.調用系統的構造函數創建對象 創建對象也叫實例化對象, Object是系統的構造函數
//語法
var 變量名 = new Object();
如何添加對象的屬性和方法
添加屬性: 如何添加屬性?
var 變量名 = new Object();
變量名.屬性名=值;
添加方法: 如何添加方法?
var 變量名 = new Object();
變量名.方法名=function(){
..代碼段...
}
或
function 函數名(){
}
變量名.方法名=函數名;
案例:
var obj=new Object();
obj.name='張三';
obj.age=33;
obj.city='重慶';
obj.say=function(){
alert('張三說話了!');
}//歡迎加入Java開發交流君樣:909038429
console.log(obj);
這種創建方式的缺點是:
1.如果使用這種方式創建了多個對象、會產生對象不能分辨出到底屬于哪一個類型!
2.每創建 一個對象都需要new Object() 一次 耗費內存空間、 不能一次性創建多個對象
小知識: 如何判斷某一個對象引用變量是不是屬于某一個類型?
語法: 對象引用變量名稱 instanceof 類名稱 返回true就是屬于這個類 返回false不屬于這種類型
this關鍵字的基本使用
在當前的對象方法中,可以使用this關鍵字代表當前對象
小知識: 訪問對象屬性和方法的另一種寫法: 對象[“屬性名”] 或 對象方法名
案例代碼如下:
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.工廠方式與構造函數 工廠方式也可以叫做封裝函數
優點: 代碼復用性提升、不同的數據當做參數進行傳遞
自定義構造函數創建對象
了解一下如何一次性創建多個對象?
案例代碼如下:
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開發交流君樣:909038429
return obj;
}
var obj1=createObject('張三',23);
var obj2=createObject('李四',66);
obj1.say();
obj2.say();
工廠方法 方法2:自定義構造函數創建對象, 自己定義一個構造函數,創建對象
優點: 可以區分出對象引用屬于哪一類
案例代碼如下
//Person就是構造函數
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();
小結: 通過上面的案例可以小結出一個概念: 就是函數如果前面有new關鍵字,那么這個函數就是構造函數,否則就是一個普通函數
==在javascript中使用new關鍵字來修飾一個 普通函數的解答
系統做4件事情
1.首先這個函數就成為了 構造函數, 因為 new 后面跟一個函數 這樣的函數就叫構造函數
2.在內存中開辟一塊(申請一塊空閑的空間)空間,存儲創建的新對象
3.構造函數中的this就設置為當前的對象
4.就是說當new寫在一個函數前面的時候、這個函數中的this就是創建出來的對象、并且函數的返回值直接默認就是this了 隱式返回,可以使用如下代碼進行測試得出結論
function Obj() {
}
//觀察返回值
console.log(Obj()); //undefined
console.log(new Obj()); //Obj {}
//所以this這個對象會返回, [ 這里的返回是自動的 無需在構造函數中使用return]
5.如果有設置對象的屬性和方法就設置值
3.字面量的方式創建對象
json對象是創建對象的一種字面量表示形式
var 變量名 = { } //這就叫字面量方式創建對象
案例代碼
var obj={};
obj.name='張三';
obj.age=22;
obj.city='北京市';
obj.fn=function () {
console.log('我的名字叫'+this.name+' 我的年齡是:'+this.age+' 我在'+this.city+'生活和工作!');
}
obj.fn();
推薦寫法:
字面量優化后的形式:其實就是json數據格式的形式 [推薦寫法]
案例代碼
var obj2={//歡迎加入Java開發交流君樣: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 = { } 是完全一樣的 只是一個在內存中的堆區中開空間 而另一個在棧區開辟空間
function Obj() {
}
var test=new Obj(); //在內存中的堆區中開空間
console.log(test);
var json={}//在棧區開辟空間 用完即釋放
console.log(json);
總結
以上是生活随笔為你收集整理的Java工厂构造函数参数,javascript 面向对象之构造函数、工厂方式、字面量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2017建行信用卡透支额度怎么提高 不可
- 下一篇: 银行怎么注销信用卡 各大银行注销流程汇总