JS對象

????對象就是擁有一組屬性和方法的集合

????如果 a.b 迹冤,那么a就是對象,b是a的屬性

????如果 a.c()收夸,那么a就是對象萍膛,c是a的方法

????定義對象有兩種方式:1.采用字面量賦值方式直接定義。2.采用構造函數(shù)的方式new一個對象

1.采用字面量賦值方式定義對象

? ??let stu1 = {

? ? ? ? ? ? //屬性名:屬性值的方式擅羞,定義屬性

? ? ? ? ? ? no:1001,

? ? ? ? ? ? name:'張三',

? ? ? ? ? ? age:20,

? ? ? ? ? ? sex:'男',

? ? ? ? ? ? //定義學生的方法

? ? ? ? ? ? study:function(){

? ? ? ? ? ? ? ? console.log('每天學習8小時');

? ? ? ? ? ? },

? ? ? ? ? ? play:function(){

? ? ? ? ? ? ? ? console.log('每天玩8小時');

? ? ? ? ? ? }

????}

????console.log(stu1);

????//調用對象身上的屬性

????console.log(stu1.name);

????console.log(stu1.age);

????//調用對象身上的方法

????stu1.study()

????stu1.play()

2.案例:使用對象制作計算器

????//定義一個計算器對象

????let calc={

? ? ? ? ? ? //定義計算器的屬性

? ? ? ? ? ? num1:0,

? ? ? ? ? ? num2:0,

? ? ? ? ? ? //定義計算器的方法

? ? ? ? ? ? jia:function(){

? ? ? ? ? ? ? ? //在對象的方法中尸变,獲取對象的其它成員,要通過this

? ? ? ? ? ? ? ? console.log(`${this.num1}+${this.num2}=${this.num1+this.num2}`);

? ? ? ? ? ? },

? ? ? ? ? ? //在SE6中减俏,對象的方法振惰,也可以采用下面的方式

? ? ? ? ? ? jian(){

? ? ? ? ? ? ? ? console.log(`${this.num1}-${this.num2}=${this.num1-this.num2}`);

? ? ? ? ? ? },

? ? ? ? ? ? cheng(){

? ? ? ? ? ? ? ? console.log(`${this.num1}*${this.num2}=${this.num1*this.num2}`);

? ? ? ? ? ? },

? ? ? ? ? ? chu(){

? ? ? ? ? ? ? ? console.log(`${this.num1}/${this.num2}=${this.num1/this.num2}`);

? ? ? ? ? ? }

????}

????//給計算器對象的兩個屬性賦值

????calc.num1 = 200

????calc.num2 = 20

????calc.jia()

????calc.jian()

????calc.cheng()

????calc.chu()

3.采用構造函數(shù)的方式new一個對象

? ??// 構造函數(shù):首先是個函數(shù),這個函數(shù)用來創(chuàng)建出對象

????// 如果使用構造函數(shù)創(chuàng)建出對象:使用new關鍵字垄懂。

????// 可以使用系統(tǒng)構造函數(shù)Object創(chuàng)建一個對象骑晶。效果等同于{}

????let obj1 = new Object()

????console.log(obj1);

????let obj2 = {}

????console.log(obj2);

????console.log('---------------------');

????// 多數(shù)情況下,都是先自定義一個構造函數(shù)草慧,再通過自定義的構造函數(shù)創(chuàng)建出對應的對象

????// 可以將構造函數(shù)理解成:類

????function Student(no,name,age,sex){

? ? ? ? ? ? //這里的this桶蛔,用于給構造函數(shù)定義成員

? ? ? ? ? ? this.no = no

? ? ? ? ? ? this.age = age

? ? ? ? ? ? this.name = name

? ? ? ? ? ? this.sex = sex

? ? ? ? ? ? this.sayHi = function(){

? ? ? ? ? ? ? ? console.log(`大家好!我叫${this.name}`);

? ? ? ? ? ? }

????}

????//通過類(構造函數(shù))可以創(chuàng)建出無數(shù)個對象

????let s1 = new Student(1001,'張三',20,'男')

????console.log(s1);

????let s2 = new Student(1002,'李四',22,'女')

????console.log(s2);

????let s3 = new Student(1003,'王五',24,'男')

????console.log(s3);

????s3.sayHi()

4.構造函數(shù)練習1

????// 定義一個棋子構造函數(shù)(類)

????function Chess(name, color, x, y) {

? ? ? ? ? ? //定義屬性

? ? ? ? ? ? this.name = name

? ? ? ? ? ? this.color = color

? ? ? ? ? ? this.x = x

? ? ? ? ? ? this.y = y

? ? ? ? ? ? //定義方法

? ? ? ? ? ? //顯示當前位置的方法

? ? ? ? ? ? this.show = function () {

? ? ? ? ? ? ? ? console.log(`${this.color}${this.name}漫谷,當前位置是X:${this.x} Y:${this.y}`);

? ? ? ? ? ? }

? ? ? ? ? ? //移動棋子的方法

? ? ? ? ? ? this.move = function (x, y) {

? ? ? ? ? ? ? ? this.x = x

? ? ? ? ? ? ? ? this.y = y

? ? ? ? ? ? ? ? //位置更新后仔雷,重新調用顯示當前位置的方法

? ? ? ? ? ? ? ? this.show()

? ? ? ? ? ? }

????}

????// 創(chuàng)建一個紅馬

????let redHorse = new Chess('馬', '紅', 15, 1)

????redHorse.show()

????redHorse.move(13, 2)

????//創(chuàng)建一個黑車

????let blackCar = new Chess('車', '黑', 1, 1)

????blackCar.show()

????blackCar.move(5, 1)

5.構造函數(shù)練習2

????// 定義一個對象,用于保存所有的工具方法

????// 這樣做的目的是,放在方法被后引入的庫覆蓋碟婆。

????let $b = {

? ? ????// 判斷是否是閏年的方法

? ? ????isLeapYear:(year) => (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0,

? ? ????// 對個位數(shù)字補零的方法

? ? ????repair0:(val) => (val < 10 ? "0" + val : val),

? ? ????// 返回一個日期的短日期格式方法

? ? ????miniDate:function (date, type){

? ? ? ? ????let year = date.getFullYear();?? ??//年

? ? ? ? ????let month = date.getMonth() + 1;?? ??//月

? ? ? ? ????let day = date.getDate();? ???//日

? ? ? ? ????let hour = date.getHours();? ???//時

? ? ? ? ????let minute = date.getMinutes();?? ??//分

? ? ? ? ????let second = date.getSeconds();? ???//秒

? ? ? ? ????let week = date.getDay();?? ??//周幾

? ? ? ? ????//定義一個返回值电抚,默認拼接:年,月竖共,日

? ? ? ? ????let ret = [this.repair0(year), this.repair0(month), this.repair0(day)].join("-");

? ? ? ? ????if (type == "1") {

? ? ? ? ? ????ret += " " + [this.repair0(hour), this.repair0(minute), this.repair0(second)].join(":");

? ? ? ? ????} else if (type == "2") {

? ? ? ? ? ????ret +=

? ? ? ? ? ? ????" " +

? ? ? ? ? ? ????[this.repair0(hour), this.repair0(minute), this.repair0(second)].join(":") +

? ? ? ? ? ? ????" 星期" +

? ? ? ? ? ? ????"日一二三四五六"[week];

? ? ? ? ????}

? ? ? ? ????return ret;

? ? ????},

? ? ????// 對字符串反轉的方法

? ? ????reverseStr:(str) => str.split("").reverse().join(""),

? ? ????// 定義一個分頁方法蝙叛,參數(shù)是:數(shù)組,頁碼公给,每頁數(shù)量

? ? ????pageData:function(arr,pageIndex,pageSize){

? ? ? ? ????let start = (pageIndex-1)*pageSize??? ??//算出起始下標

? ? ? ? ????let end = start+pageSize? ?? ??//算出結束下標

? ? ? ? ????//根據(jù)起始下標和結束下標借帘,從原始數(shù)組中截取對應的數(shù)據(jù)并返回

? ? ? ? ????return {

? ? ? ? ? ? ????//定義返回的數(shù)據(jù)

? ? ? ? ? ? ????data:arr.slice(start,end),

? ? ? ? ? ? ????//總數(shù)量

? ? ? ? ? ? ????count:arr.length,

? ? ? ? ? ? ????//總頁數(shù)

? ? ? ? ? ? ????totalPage:Math.ceil(arr.length/pageSize),

? ? ? ? ? ? ????//當前頁

? ? ? ? ? ? ????pageIndex:pageIndex,

? ? ? ? ? ? ????//每頁數(shù)量

? ? ? ? ? ? ????pageSize:pageSize

? ? ? ? ????}

? ? ????}

????}

? ??//調用

? ??<script src="./js/kai.js"></script>

? ? <script>

? ? ? ? // 定義一個數(shù)組

? ? ? ? let arr = [11,22,33,44,55,66,77,88,99,111,222,333,444,555,666,777,888,999]

? ? ? ? console.log($b.pageData(arr,3,4));

? ? ? ? console.log($b.isLeapYear(2022));

? ? ? ? console.log($b.miniDate(new Date()));

? ? </script>

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市淌铐,隨后出現(xiàn)的幾起案子肺然,更是在濱河造成了極大的恐慌,老刑警劉巖腿准,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件际起,死亡現(xiàn)場離奇詭異,居然都是意外死亡吐葱,警方通過查閱死者的電腦和手機街望,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唇撬,“玉大人,你說我怎么就攤上這事展融〗讶希” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵告希,是天一觀的道長扑浸。 經(jīng)常有香客問我,道長燕偶,這世上最難降的妖魔是什么喝噪? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮指么,結果婚禮上酝惧,老公的妹妹穿的比我還像新娘。我一直安慰自己伯诬,他們只是感情好晚唇,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盗似,像睡著了一般哩陕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天悍及,我揣著相機與錄音闽瓢,去河邊找鬼。 笑死心赶,一個胖子當著我的面吹牛扣讼,可吹牛的內容都是我干的。 我是一名探鬼主播园担,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼届谈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了弯汰?” 一聲冷哼從身側響起艰山,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎咏闪,沒想到半個月后曙搬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡鸽嫂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年纵装,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片据某。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡橡娄,死狀恐怖,靈堂內的尸體忽然破棺而出癣籽,到底是詐尸還是另有隱情挽唉,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布筷狼,位于F島的核電站瓶籽,受9級特大地震影響,放射性物質發(fā)生泄漏埂材。R本人自食惡果不足惜塑顺,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望俏险。 院中可真熱鬧严拒,春花似錦、人聲如沸竖独。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽预鬓。三九已至巧骚,卻和暖如春赊颠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背劈彪。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工竣蹦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沧奴。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓痘括,卻偏偏與公主長得像,于是被迫代替她去往敵國和親滔吠。 傳聞我的和親對象是個殘疾皇子纲菌,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內容

  • 對象: 對象是一種以鍵值對描述的數(shù)據(jù)格式 =====》 鍵值對 key:value 分類描述需要用到鍵值對的方式 ...
    小胖墩_cf6d閱讀 261評論 0 0
  • 對象屬性遍歷,就是要搞清楚 哪些屬性可以遍歷疮绷,哪些屬性不能遍歷翰舌。 對象復制就是要搞清楚哪些屬性可以復制,哪些屬性不...
    前端人閱讀 454評論 1 0
  • 對象概念: 對象就是擁有一組屬性和方法的集合冬骚,如果a.b 椅贱,那么a就是對象,b是a的屬性 如果a.c()只冻,那么a...
    錦衣夜行001閱讀 169評論 0 1
  • js中有六種數(shù)據(jù)類型庇麦,包括五種基本數(shù)據(jù)類型(Number,String,Boolean,Null,Undefine...
    寧驥閱讀 476評論 0 0
  • // 注意:構造函數(shù)不能使用箭頭函數(shù)定義 function Person(name, age) { ...
    錦衣夜行001閱讀 168評論 0 1