javascript 對象總結

1.對象

1.1 什麼事對象?

對象是一個具體的事物
在JavaScript中,對象是一組無序的相關屬性和方法的集合,所有的事物都是對象,例如字符串、數值、數組、函數等
對象是由屬性和方法組成的

  • 屬性:事物的特徵,在對象中用屬性來表示(常用名詞)
  • 方法:事物的行爲,在對象中用方法來表示(常用動詞)

比如手機:
屬性:大小、顏色、重量、屏幕尺寸、厚度
方法:打電話、發短信、玩遊戲、砸核桃

1.2 什麼需要對象?

保存一個值時,可以使用變量,保存多個值(一組值)時,可以使用數組。如果要保存一個人的完整信息呢?
例如,將“五哥”的個人信息保存在數組中的方式:

var arr = ['五哥','男',29,174];

JS中對象表達結構更清晰,更強大。五哥的個人信息在對象中的表達結構如下

person.name = '五哥';
person.sex = '男';
person.age = 29;
person.height = '174';

2.創建對象的三種方式

在JavaScript中,現階段可以採用三種方式創建對象(object):

  • 利用字面量創建對象
  • 利用new Object創建對象
  • 利用構造函數創建對象

2.1 利用字面量創建對象

對象字面量:就是花括號{}裏面包含了表達這個具體事物(對象)的屬性和方法

//1.利用對象字面量創建對象 {}
//var obj =  {}; //創建了一個空的對象
var obj = {
	uname:'五哥',
	age:29,
	sayHi: function () {
		console.log('hi~');
	}
}
//(1)裏面的屬性或者方法我們採取鍵值對的形式  鍵 屬性名 :  值  屬性值:
//(2)多個屬性或者方法中間用逗號隔開的
//(3)方法冒號後面跟的是一個匿名函數
//2.使用對象
//(1)調用的屬性還有一個方法  對象名.屬性名  .理解爲的
console.log(obj.uname);  //五哥
//(2)調用對象的屬性  對象名['屬性名']
console.log(obj['age']);  //29
//(3)調用對象的方法 sayHi   對象名.方法名
obj.sayHi();

對象的調用

  • 對象裏面的屬性調用:對象.屬性名,這個小點,理解爲“的”
  • 對象裏面屬性的另一種調用方式:對象[‘屬性名’],注意方括號裏面的屬性必須加引號
  • 對象裏面的方法調用:對象.方法名(),注意這個方法後面一定加括號
console.log(obj.uname);  //調用名字屬性
console.log(obj['age']);  //調用名字屬性
obj.sayHi();  //調用sayHi方法

變量、屬性、函數、方法總結

  • 變量:單獨聲明賦值,單獨存在
  • 屬性:對象裏面的變量稱爲屬性,不需要聲明,用來描述該對象的特徵
  • 函數:單獨存在的,通過“函數名()”的方式就可以調用
  • 方法:對象裏面的函數稱爲方法,方法不需要聲明,使用“對象.方法名()”的方式就可以調用,方法用來描述該對象額行爲和功能
//變量、屬性、函數、方法的區別
//1.變量和屬性的相同的,他們都是用來存儲數據的
var num = 10;
var obj = {
	age:18;
	fn:function(){}  //方法
}
function fn(){}  //函數
console.log(obj.age);
//變量,單獨聲明並賦值,使用的時候直接寫變量名,單獨存在
//屬性,在對象裏面的不需要聲明的,使用的時候必須是,對象.屬性
//2.函數和方法的相同點,都是實現某種功能,做某件事
//函數時單獨聲明,並且調用的,函數名()單獨存在的
//方法,在對象裏面,調用的時候,對象.方法()

2.2 利用new Object創建對象

  • 變量:單獨聲明賦值,單獨存在
  • 屬性:對象裏面的變量稱爲屬性,不需要聲明,用來描述該對象的特徵
  • 函數:單獨存在的,通過“函數名()”的方式就可以調用
  • 方法:對象裏面的函數稱爲方法,方法不需要聲明,使用“對象.方法名()”的方式就可以調用,方法用來描述該對象額行爲和功能
//利用new Object創建對象
var obj = new Object(); //創建了一個空對象
obj.name = '大傻子';
obj.age = 18;
obj.sex = '男';
obj.sayHi = function(){
		console.log('hi');
	}
	//(1)利用等號=賦值的方法,添加對象的屬性和方法
	//(2)每個屬性和方法之間用分號結束
console.log(obj.uname);
console.log(obj['sex']);
obj.sayHi();

2.3 利用構造函數創建對象

構造函數:是一種特殊的函數,主要用來初始化對象,即爲對象成員變量賦初始值,它總與new運算符一起使用。我們可以把對象中一些公共的屬性和方法抽取出來,然後封裝到這個函數裏面

//爲什麼需要使用構造函數
//前面兩種創建對象的方式一次只能創建一個對象
var ldh = {
	uname:'劉德華';
	age:55;
	sing:function(){
		console.log('冰雨');
	}  
}
var zxy = {
	uname:'張學友';
	age:58;
	sing:function(){
		console.log('李香蘭');
	}  
}
//利用構造函數創建對象
//創建四大天王的對象  相同的屬性:名字 年齡 性別;相同的方法:唱歌
//構造函數的語法格式
function 構造函數名(){
	this.屬性 =;
	this.方法 = function(){}  
}  
new 構造函數名()

function Star(uname,age,sex){
	this.name = uname;
	this.age = age;
	this.sex = sex;
	this.sing = function(sang){
		console.log(sang);
	}
}  
var ldh = new Star('劉德華',18,'男');  //調用函數返回的是一個對象
console.log(typeof ldh); //檢測是否是對象
console.log(ldh.name); 
console.log(ldh['sex']); 
ldh.sing('冰雨');
var zxy = new Star('張學友',19,'男');
console.log(zxy.name); 
console.log(zxy.age); 

//1.構造函數名字首字母要大寫
//2.構造函數不需要return,就可以返回結果
//3.調用構造函數,必須使用new
//4.只要new Star()調用函數就創建一個對象 ldh{}
//5.屬性和方法前面必須添加this

2.4 構造函數和對象

  • 構造函數,如Stars(),抽象了對象的公共部分,封裝到了函數裏面,它泛指某一大類(class)
  • 創建對象,如new Stars()特指某一個,通過new關鍵字創建對象的過程也稱爲對象實例化
//構造函數和對象
//1.構造函數  明星 泛指的某一大類
function Star(uname,age,sex){
	this.name = uname;
	this.age = age;
	this.sex = sex;
	this.sing = function(sang){
		console.log(sang);
	}
}  
//2.對象 特指 是一個具體的事物
var ldh = new Star('劉德華',18,'男');  //調用函數返回的是一個對象
console.log(ldh.name); 
//3.利用構造函數創建對象的過程也稱爲對象實例化

3.new關鍵字

//new關鍵字執行過程
//1.new 構造函數可以在內存中創建一個空對象
//2.this 就會指向剛纔創建的空對象
//3.執行構造函數裏面的代碼,給這個空對象添加屬性和方法
//4.返回這個對象
function Star(uname,age,sex){
	this.name = uname;
	this.age = age;
	this.sex = sex;
	this.sing = function(sang){
		console.log(sang);
	}
}  
var ldh = new Star('劉德華',18,'男');  //調用函數返回的是一個對象

4.遍歷對象屬性

for…in語句用於對數組或者對象的屬性進行循環操作

//遍歷對象
var obj = {
	name = 小可愛'';
	age = 18;
	sex = '女';
	fn:function(){}
}  
console.log(obj.name);
console.log(obj.age);
console.log(obj.sex);
//for in 遍歷我們的對象
//for (變量 in 對象){} 
for(var k in obj){
	console.log(k);  //k 變量 輸出 得到的是屬性名
	console.log(obj[k]);  //obj[k]  得到的是屬性值
}
//使用for in 裏面的變量寫k或者key

5.小結

  1. 對象可以讓代碼結構更清晰
  2. 對象複雜數據類型object
  3. 本質:對象就是一組無序的相關屬性和方法的集合
  4. 構造函數泛指某一大類,比如蘋果,不管是紅色蘋果還是綠色蘋果,都統稱爲蘋果
  5. 對象實例特指某一事物,比如這個蘋果,寫篇文章的我等
  6. for…in語句用於對對象的屬性進行循環操作
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章