第五章 引用類型

Object

這個數(shù)據類型,有點類似python中的字典

object 類型的創(chuàng)建

1 new方法

my_object = new Object();

2 對象字面量表示法

var my_object = {
    xxx: xxxx撵幽,
    xxx: xxxx     //注意這里沒有逗號
}

object 取值

var person = new Object();
person.name = 'qifumin';
person.age = 27;
console.log(person)   //{ name: 'qifumin', age: 27 }

var computer = {
    name: 'apple',
    'age': 33,
    size: 13.4,
    5: 'shanghai'        // 這里最后不要有,逗號
}
console.log(computer)   //{ '5': 'shanghai', name: 'apple', age: 33, size: 13.4 }
console.log(computer['5']) //shanghai
console.log(computer[5])  //shanghai
console.log(computer.name) //apple
console.log(computer.age)  //33
console.log(computer.5) // 這種寫法是錯誤的

定義一個空的object

var people = new Object();
var dog = {};
console.log(people)
console.log(dog)
people.name = 'aaa';
dog.name = 'bbb'
console.log(people);  //{ name: 'aaa' }
console.log(dog);  //{ name: 'bbb' }

作為函數(shù)的參數(shù)

這一點python也是可以的

function displayInfo(args) {
    var output = "";
    if (typeof args.name == "string") {
        output += "Name: " + args.name + "\n";
    }
    if (typeof args.age == "number") {
        output += "Age: " + args.age + "\n";
    }
    console.log(output);
}
displayInfo({
    name: "Nicholas",     //Name: Nicholas
    age: 29                     //Age: 29
});
displayInfo({
    name: "Greg"          //Name: Greg
});

Array 類型

就是其他語言中的數(shù)組瘦穆,列表
這個array類型和python中的list更像零渐。一個array類型可以容下很多種不同的基本類型對象,不像c++需要聲明好是什么類型的數(shù)組伐厌。

array類型的創(chuàng)建

1 new Array()方法
2 字面值表達式

var teacher = new Array('li', 'wang', 'liu', undefined, null, 45, true);
console.log(teacher)  // [ 'li', 'wang', 'liu', undefined, null, 45, true ]
// 也可以不寫new
var school = Array('qinghua', 'beida')
console.log(school)

var student = [
    'xiaoming',
    'xiaowen',
    'xiaogang'
]
console.log(student) // [ 'xiaoming', 'xiaowen', 'xiaogang' ]

注意:括號里跟一個num會表示創(chuàng)建幾個元素的空列表

var my_array = new Array('2'); // [ '2' ]
console.log(my_array);
var my_array = new Array(2); // [ <2 empty items> ] 兩個元素的空列表
console.log(my_array);

數(shù)組的取值

常規(guī)操作定嗓,就是通過索引取,從0開始
但是取超出索引的元素注整,會返回為定義undefined能曾,而不是報錯,這點很特別

var student = [
    'xiaoming',
    'xiaowen',
    'xiaogang'
]
console.log(student) // [ 'xiaoming', 'xiaowen', 'xiaogang' ]
console.log(student[0])  //xiaoming
console.log(student[10]) //undefined

數(shù)組的length屬性

var my_array = new Array(1,2,3,4,5,6,7,8,9); 
console.log(my_array);  // [1, 2, 3, 4, 5,6, 7, 8, 9]
console.log(my_array.length); //9

my_array.length = 8; // 將數(shù)組的長度置為8
console.log(my_array); // [1, 2, 3, 4, 5,6, 7, 8]  就會保留前幾位

my_array.length = 15; 
console.log(my_array); // [ 1, 2, 3, 4, 5, 6, 7, 8, <7 empty items> ]  后面補undefine

console.log(my_array[10]) //undefined

檢查數(shù)組

console.log(Array.isArray(my_array)) //true

轉換方法

// toString()方法是調用了每一個元素的toString()方法
// valueOf()方法肿轨,返回的還是數(shù)組
// alert()的參數(shù)必須為字符串寿冕,所以他自己轉換了一下,也就是調用了數(shù)組的toString()
var colors = ["red", "blue", "green"]; // 創(chuàng)建一個包含 3 個字符串的數(shù)組
alert(colors.valueOf()); // red,blue,green 所以這個語句的背后椒袍,是后面這兩句
alert(colors); // red,blue,green
alert(colors.toString()); // red,blue,green

// 這個console.log()就是單純的把對象打印出來
var colors = ["red", "blue", "green"]; // 創(chuàng)建一個包含 3 個字符串的數(shù)組
console.log(colors.toString()); // red,blue,green
console.log(colors.valueOf()); // [ 'red', 'blue', 'green' ]
console.log(colors); // [ 'red', 'blue', 'green' ]

自定義兩個對象驼唱,實驗一下alert,還有tostring,tolocalstring

var person1 = {
    toLocaleString: function () {
        return "one";
    },
    toString: function () {
        return "two";
    }
};
var person2 = {
    toLocaleString: function () {
        return "three";
    },
    toString: function () {
        return "four";
    }
};
var people = [person1, person2];
console.log(people); 
console.log(people.toString()); //two,four
console.log(people.toLocaleString()); //one,three
-------------------
var person1 = {
    toLocaleString: function () {
        return "one";
    },
    toString: function () {
        return "two";
    }
};
var person2 = {
    toLocaleString: function () {
        return "three";
    },
    toString: function () {
        return "four";
    }
};
var people = [person1, person2];
alert(people); //two,four    返回的結果與tostring()一樣
alert(people.toString()); //two,four
alert(people.toLocaleString()); //one,three

join方法驹暑,和python中的join類似玫恳,注意undefined

var colors = ["red", "green", "blue"];
console.log(colors.join(",")); //red,green,blue
console.log(colors.join("||")); //red||green||blue
console.log(colors.join(null)); //rednullgreennullblue
console.log(colors.join(undefined)); //red,green,blue

棧方法

// 這兩個方法都是在數(shù)組尾部操作的元素
var colors = new Array(); // 創(chuàng)建一個數(shù)組
console.log(colors.push("red", "green")); //2 推入兩項
console.log(colors.push("black")); //3 返回的是推進去后辨赐,數(shù)組的長度
var item = colors.pop(); // 取得最后一項
console.log(item); //"black"
console.log(colors.length); //2

隊列方法

var colors = new Array(); //創(chuàng)建一個數(shù)組
console.log(colors.push("red")); //1
console.log(colors); //[ 'red' ]
console.log(colors.push("green")); //2
console.log(colors); //[ 'red', 'green' ]
console.log(colors.push("black")); //3
console.log(colors); //[ 'red', 'green', 'black' ]
var item = colors.shift(); //取得第一項
console.log(item); //"red"
console.log(colors.length); //2
console.log(colors);// [ 'green', 'black' ]

console.log('---------------'); //2

var colors = new Array(); //創(chuàng)建一個數(shù)組
console.log(colors.unshift("red")); //1
console.log(colors); //[ 'red' ]
console.log(colors.unshift("green")); //2
console.log(colors); //[ 'green', 'red' ]
console.log(colors.unshift("black")); //3
console.log(colors); //[ 'black', 'green', 'red' ]
var item = colors.pop(); //取得第一項
console.log(item); //"red"
console.log(colors); //[ 'black', 'green' ]

總之:

pop 后面彈出
push 后面推進
shift 前端彈出
unshift 前端推進
前端 后端
彈出 shift pop
推進 unshift push

Date()類型

var now = new Date(); // Date()的參數(shù)必須是毫秒數(shù),通過parse和UTC兩個方法拓展了參數(shù)番位
console.log(now)  // 2020-09-08T03:54:30.724Z
console.log(now.getDate()) // 8 多少日

Date.parse()

console.log(Date.parse('3/6/2020')) //1583424000000
// console.log(Date.parse('11111'))
console.log(new Date(1597878968161)) //2020-08-19T23:16:08.161Z
console.log(new Date('1597878968161')) // Invalid Date

console.log(new Date(Date.parse('3/5/2010'))) // 2010-03-04T16:00:00.000Z
console.log(new Date('3/5/2010')) // 直接給Date傳遞parse的參數(shù) 其實背后調用的依舊是parse方法


// 毫秒數(shù)
var start = Date.now();
console.log(start)  // 1599537270731 類似與python中的time.time()獲取時間戳

console.log(Date.UTC(2020,6)) // 1593561600000
// GMT 時間 2000 年 1 月 1 日午夜零時
var y2k = new Date(Date.UTC(2000, 0)); // 月份是從0開始的
console.log(y2k); // 2000-01-01T00:00:00.000Z
// GMT 時間 2005 年 5 月 5 日下午 5:55:55
var allFives = new Date(Date.UTC(2005, 4, 5, 17, 55, 55));
console.log(allFives); // 2005-05-05T17:55:55.000Z


// 本地時間 2000 年 1 月 1 日午夜零時
console.log(new Date(2000, 0)); // 1999-12-31T16:00:00.000Z
// 本地時間 2005 年 5 月 5 日下午 5:55:55
console.log(new Date(2005, 4, 5, 17, 55, 55)); // 2005-05-05T09:55:55.000Z


var date1 = new Date(2007, 0, 1, 10,23,12); //"January 1, 2007"
var date2 = new Date(2007, 1, 1); //"February 1, 2007"
console.log(date1 < date2); //true
console.log(date1 > date2); //false
console.log(date1.valueOf()) // 1167580800000  返回的也是毫秒數(shù)
console.log(date2.valueOf())

console.log(date1.toDateString()) // Mon Jan 01 2007
console.log(date1.toTimeString()) // 10:23:12 GMT+0800 (中國標準時間)


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末京办,一起剝皮案震驚了整個濱河市掀序,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌惭婿,老刑警劉巖不恭,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異财饥,居然都是意外死亡换吧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門钥星,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沾瓦,“玉大人,你說我怎么就攤上這事打颤”┲簦” “怎么了漓滔?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵编饺,是天一觀的道長。 經常有香客問我响驴,道長透且,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任豁鲤,我火速辦了婚禮秽誊,結果婚禮上,老公的妹妹穿的比我還像新娘琳骡。我一直安慰自己锅论,他們只是感情好,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布楣号。 她就那樣靜靜地躺著最易,像睡著了一般。 火紅的嫁衣襯著肌膚如雪炫狱。 梳的紋絲不亂的頭發(fā)上藻懒,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音视译,去河邊找鬼嬉荆。 笑死,一個胖子當著我的面吹牛酷含,可吹牛的內容都是我干的鄙早。 我是一名探鬼主播汪茧,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼限番!你這毒婦竟也來了陆爽?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤扳缕,失蹤者是張志新(化名)和其女友劉穎慌闭,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躯舔,經...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡驴剔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了粥庄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丧失。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖惜互,靈堂內的尸體忽然破棺而出布讹,到底是詐尸還是另有隱情,我是刑警寧澤训堆,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布描验,位于F島的核電站,受9級特大地震影響坑鱼,放射性物質發(fā)生泄漏膘流。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一鲁沥、第九天 我趴在偏房一處隱蔽的房頂上張望呼股。 院中可真熱鬧,春花似錦画恰、人聲如沸彭谁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缠局。三九已至,卻和暖如春蔼两,著一層夾襖步出監(jiān)牢的瞬間甩鳄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工额划, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留妙啃,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像揖赴,于是被迫代替她去往敵國和親馆匿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348