一、種類
** 1. 系統(tǒng)類**
** 2. 自定義類**
關(guān)于幾個(gè)常用系統(tǒng)類#
1)String類 字符串類
length :取得字符串長度
indexOf(string) :取得參數(shù)在字符串中出現(xiàn)的位置
substr(num1,[num2]) :截取字符串
toLowerCase() :轉(zhuǎn)換為小寫
toUpperCase() :轉(zhuǎn)換為大寫
replace(str1,str2) :字符串替換
2)Date類 日期類
getYear() :返回年份
getFullYear() :返回年份
getMonth() :返回月份 (0---11)
getDate() :返回每月第幾天
getDay() :返回星期數(shù)(0-6)
getHours() :返回小時(shí)數(shù)
getMinutes() :返回分鐘數(shù)
getSeconds() :返回秒數(shù)
getMilliseconds() :返回毫秒數(shù)
3)Math類 數(shù)學(xué)類
ceil(數(shù)值) :返回大于或等于該數(shù)的最小整數(shù)
floor(數(shù)值) :返回小于或等于該數(shù)的最大整數(shù)
min(數(shù)值1,數(shù)值2) :返回最小數(shù)
max(數(shù)值1,數(shù)值2) :返回最大數(shù)
pow(數(shù)值1,數(shù)值2) :返回?cái)?shù)值1的數(shù)值2次數(shù)
random() :返回隨機(jī)數(shù) 0----------1
round(數(shù)值) :四舍五入
sqrt(數(shù)值) :開平方根
二、自定義類的使用
1、類的定義
語法:
function 類名(){
}
在js中,沒有類的定義語句,只有function,每一個(gè)function,我們可以認(rèn)為它是同名類的構(gòu)造函數(shù)
Function person -----> 它是Person類的構(gòu)造函數(shù)
這種函數(shù)也叫構(gòu)造器
function Person(){
}
2、聲明對(duì)象
語法:
var 對(duì)象=new 類名();
開辟相應(yīng)內(nèi)存空間
function Person(){
alert('hello');
}
var p1 = new Person();
執(zhí)行上題,我們發(fā)現(xiàn),在實(shí)例化時(shí),直接執(zhí)行了Person構(gòu)造函數(shù)
3、關(guān)于對(duì)象屬性的使用
語法:
- 對(duì)象.屬性;
- 對(duì)象[‘屬性’];
在js中,對(duì)象屬性是動(dòng)態(tài)添加的,對(duì)象屬性可以使用“.”或[‘’]這兩種形式表示出來
對(duì)象的屬性可以是任何數(shù)據(jù)類型,如:字符串、數(shù)字、對(duì)象
window.document.write();
window.navigator.appCodeName
4、重點(diǎn)說明
在js中,一切都是對(duì)象
var num = 10; //Number
var str =‘hello’; //String
var flag = true; //Boolean
var per = new Person();
-
三個(gè)常用關(guān)鍵字: *
constructor:返回的是對(duì)象的構(gòu)造器
typeof :返回?cái)?shù)據(jù)類型
instanceof :判斷對(duì)象是否是某個(gè)類的實(shí)例
alert(p1.constructor);
alert(typeof p1);
alert(p1 instanceof Person);
三、對(duì)象在內(nèi)存中表現(xiàn)形式(指針指向的是否是同一個(gè)地址)
** 1. 如果創(chuàng)建第二個(gè)對(duì)象,會(huì)擁有name和age屬性么**
function Person(){
}
var p1 = new Person();
p1.name = 'zhangsan';
p1.age=30;
var p2 = new Person();
alert(p2.name);

創(chuàng)建p1對(duì)象時(shí),會(huì)為p1開辟相應(yīng)的堆空間,然后將name和age屬性以及值添加到p1所指向的堆空間中,
創(chuàng)建p2對(duì)象時(shí),也會(huì)為p2對(duì)象開辟對(duì)應(yīng)的空間,但p2所指向的堆空間是空的,
所以P2對(duì)象沒有name和age屬性
2. 如果創(chuàng)建第二個(gè)對(duì)象p2,使用p1為p2賦值會(huì)怎樣?
function Person(){
}
var p1 = new Person();
p1.name = 'zhangsan';
p1.age=30;
var p2=p1;
alert(p2.name);
p2.name='lisi';
alert(p1.name);

Var p2=p1;
將p1棧中保存的堆的地址賦值給了p2,所以說,p2也指向了p1指向的堆內(nèi)存的地址
兩個(gè)對(duì)象指向了同一塊堆內(nèi)存,所以改變一個(gè)對(duì)象的屬性,會(huì)影響到另一個(gè)對(duì)象
Js中的數(shù)據(jù)類型
值類型
引用類型
**3.如果刪除了p2對(duì)象,是否會(huì)影響到p1對(duì)象 **
var p1 = new Person();
p1.name = 'zhangsan';
p1.age=30;
var p2 = p1;
p2 = null;
alert(p1.name + p1.age);

P2=null; 表示釋放p2所占的??臻g,但p1的空間仍保留,p1仍然指向相應(yīng)的堆空間,所以刪除p2不會(huì)影響到p1對(duì)象。