JavaScript對象

1. Object 對象類型

對象是 JavaScript 中一組屬性和方法的無序集嗓袱。
對象一般是針對一功能載體的描述掏秩。比如:狗對象却音、貓對象除呵。狗對象:擁有常見 age吼渡、name宋彼、color酷誓、type
屬性赫悄,還有奔跑 run()等行為原献。
JavaScript 中的對象是動態(tài)的馏慨,可以隨時添加屬性和刪除屬性。
除了字符串姑隅、數(shù)值類型写隶、布爾類型、null讲仰、undefined 之外的都是對象類型慕趴。對象是引用類型

2 Object 對象創(chuàng)建方式

Object 類型是我們用的最多的引用類型,我們接觸到的大部分都是 Object 類型的實例鄙陡。
創(chuàng)建 Object 類型實例的方法:
第一種:new 運算符創(chuàng)建對象
var a = new Object();//new 運算符冕房,創(chuàng)建一個 Object 對象。
a.age = 18;
a.name = "itt";
第二種:對象字面量
var a = {
name : "itct",
show : "http://www.ss.cn"
};
a.age = 19;
參考代碼:
// 創(chuàng)建 Object 對象的兩種方式
// 第一種:使用 new 操作符創(chuàng)建對象趁矾。
var t = new Object(); // 創(chuàng)建了一個 Object 對象 t耙册。
// new: 會創(chuàng)建一個對象,然后對象執(zhí)行 Object 函數(shù)愈魏。最后返回一個
對象實例
// js 是一個動態(tài)語言觅玻,可以隨時添加屬性和方法。
t.age = 19; // 年齡 19
t.name = 'jeck'; // 名字
t.run = function () { // 匿名函數(shù)
console.log('奔跑的方法...');
};
t["demo"] = "demo2";
// 對象怎么使用自己的屬性和方法培漏?
// 第一種方式:使用點的方式溪厘。
console.log(t.age); // => 19
// 第二種方式:使用中括號的方式。
console.log(t['name']); // => ject
字面量創(chuàng)建對象的方式
// 創(chuàng)建對象的第二種方式:字面量的方式
// 也稱為使用 JSON 對象的方式牌柄。
var t = { // 創(chuàng)建一個對象 t
    age: 19,
    name: 'laoma',
    run: function() {
    console.log('老馬跑路了畸悬!');
    }
};
t.color = 'yellow';
console.log(t.age);
t.run(); // 執(zhí)行 t 對象中的 run 方法。如果一個對象的屬性是函數(shù)珊佣,我們就稱為方法蹋宦。
t.age = 10;
console.log(t.age);

3 引用類型

引用類型是 JavaScript 中復(fù)雜類型,是一種數(shù)據(jù)結(jié)構(gòu)咒锻。
JavaScrip 中所有的東西都是對象冷冗。
object 就是最長用的引用類型
引用類型在內(nèi)存中模型:
棧內(nèi)存
堆內(nèi)存
簡單類型只存儲在棧上(boolean、number)
數(shù)據(jù)存儲方式.png

.4 刪除屬性

JavaScript 的對象非常靈活惑艇,可以隨時刪除屬性蒿辙。
刪除屬性的運算符是 delete 關(guān)鍵字
語法結(jié)構(gòu):
delete object.property
delete object['property']
注意以下幾點:
? delete 操作符會從某個對象上移除指定屬性。成功刪除的時候回返回 true滨巴,否則返回false思灌。
? 如果你刪除的屬性在對象上不存在,那么 delete 將不會起作用恭取,但仍會返回 true
? 如果 delete 操作符刪除成功泰偿,則被刪除的屬性將從所屬的對象上徹底消失。
? 任何使用 var 聲明的屬性不能從全局作用域或函數(shù)的作用域中刪除蜈垮。
? 除了在全局作用域中的函數(shù)不能被刪除耗跛,在對象(object)中的函數(shù)是能夠用 delete 操作刪除的裕照。
var t = {}; // t= new Object();
t.age = 19; // 添加一個屬性 age
console.log(t.age); // => 19
// 通過 delete 操作符 刪除屬性
delete t.age; // 刪除 t 的自定義 age 屬性。
// debugger t["age"];
console.log(t.age); // => undefined
// 通過 in 運算符 可以檢測屬性是否屬于對象的自定義屬性,返回的結(jié)果是 true 或者 false
t.name = '123';
console.log('name' in t); // => true
delete t['name']; // 刪除了自定義屬性
console.log('name' in t); // => false

5 檢測屬性

JavaScript 的對象檢測屬性用 in 運算符
var t = {};
t.age = 19;
‘a(chǎn)ge’ in t; // =>true
delete t.age;
‘a(chǎn)ge’ in t; // =>false

6 枚舉自定義屬性

JavaScript 的對象可以使用 for in 循環(huán)遍歷對象中的所有屬性课兄。
var t = {};
t.age = 20;
for(var i in t) { console.log(i);}
會把繼承的屬性也會遍歷到牍氛。

7 對象的原型

每個對象都有自己的私有原型對象(除了 null)
每個對象都會從自己的私有原型對象上繼承原型的方法和屬性,可以直接對象可以直接使用烟阐。
對象調(diào)用一個屬性或者方法的時候先搜索自己的屬性和方法,如果沒有那么就去搜索原型上的屬性和方法紊扬,
如果有就直接使用蜒茄,如果沒有就直接拋出錯誤。
對象的私有原型都是通過__proto__聯(lián)系在一塊餐屎,注意這不是一個標(biāo)準(zhǔn)的屬性檀葛,但是所有瀏覽器都實現(xiàn)了這
個屬性。
構(gòu)造函數(shù)就是構(gòu)造對象的時候執(zhí)行的函數(shù)腹缩。比如:Object
對象的原型可以通過它的構(gòu)造函數(shù)的.prototype 獲的屿聋。
原型.png

8 Object 對象原型的方法

toString()轉(zhuǎn)換成字符串
toLocalString() 轉(zhuǎn)換成本地化對應(yīng)的字符串
valueOf() 獲取它的值。
hasOwnProperty() 判斷屬性是否是自己創(chuàng)建添加的藏鹊。

9 對象練習(xí)

1.封裝一個貓對象润讥。貓擁有:顏色、重量盘寡、名字楚殿、ID 等屬性,還擁有跑竿痰、跳脆粥、叫等行為。并調(diào)用貓貓的
  跑方法影涉。
//1变隔、 封裝一個貓對象。貓擁有:顏色蟹倾、重量匣缘、名字、ID 等屬性喊式,還擁有跑孵户、 跳、叫等行為岔留。并調(diào)用貓
  貓的跑方法夏哭。
// var cat = new Object();
var cat = {
      color: 'red',
      weight: 20,
      name: 'kimi',
      ID: 1234,
      run: function() {
    // this 就相當(dāng)于 cat 對象。在對象的方法中使用 this 代表當(dāng)前的對象献联。
          console.log(this.name + ' 奔跑方法');
      },
      jump: function() {
      }
};
cat.run();

2.輸出貓貓的所有的自定義屬性的名稱
 // 輸出貓所有的自定義屬性
for(var k in cat) {
      console.log(k);
}
3.封裝一個數(shù)學(xué)對象竖配,對象中包括:Pi 屬性何址,獲取 1-n 的和的方法,獲取 n 的階乘的方法进胯。
// 3用爪、封裝一個數(shù)學(xué)對象,對象中包括:Pi 屬性胁镐,獲取 1-n 的和的方法偎血,獲取n 的階乘的方法。
var myMath = {
      PI: 3.1415926,
      sum: function(n) {
          var result = 0;
          // 實現(xiàn) 1 到 n 的和
          for(var i = 1; i <= n; i++) {
                result += i;
          }
            return result;
       },
    factorial: function(n) {
        // 求 1 到 n 的階乘
        var result = 1;
        for(var i = 1; i<=n; i++) {
        result *= i;
        }
        return result;
    }
};
console.log(myMath.PI);
console.log(myMath.sum(100));
console.log(myMath.factorial(10));
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盯漂,一起剝皮案震驚了整個濱河市颇玷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌就缆,老刑警劉巖帖渠,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異竭宰,居然都是意外死亡空郊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門切揭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狞甚,“玉大人,你說我怎么就攤上這事伴箩∪肜ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵嗤谚,是天一觀的道長棺蛛。 經(jīng)常有香客問我,道長巩步,這世上最難降的妖魔是什么旁赊? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮椅野,結(jié)果婚禮上终畅,老公的妹妹穿的比我還像新娘。我一直安慰自己竟闪,他們只是感情好离福,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著炼蛤,像睡著了一般妖爷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上理朋,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天絮识,我揣著相機與錄音绿聘,去河邊找鬼。 笑死次舌,一個胖子當(dāng)著我的面吹牛熄攘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播彼念,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼挪圾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了国拇?” 一聲冷哼從身側(cè)響起洛史,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酱吝,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體土思,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡务热,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了己儒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崎岂。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖闪湾,靈堂內(nèi)的尸體忽然破棺而出冲甘,到底是詐尸還是另有隱情,我是刑警寧澤途样,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布江醇,位于F島的核電站,受9級特大地震影響何暇,放射性物質(zhì)發(fā)生泄漏陶夜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一裆站、第九天 我趴在偏房一處隱蔽的房頂上張望条辟。 院中可真熱鬧,春花似錦宏胯、人聲如沸羽嫡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杭棵。三九已至,卻和暖如春了牛,著一層夾襖步出監(jiān)牢的瞬間颜屠,已是汗流浹背辰妙。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留甫窟,地道東北人密浑。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像粗井,于是被迫代替她去往敵國和親尔破。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 作者:clearbug原文地址:http://www.cnblogs.com/craftsman-gao/p/48...
    IT程序獅閱讀 791評論 1 8
  • javaScript中的對象有內(nèi)置對象浇衬,宿主對象懒构,自定義對象;內(nèi)置對象:數(shù)組耘擂,函數(shù)胆剧,日期,正則表達(dá)式醉冤;宿主對象:j...
    2018_ieye閱讀 300評論 0 1
  • 對象 對象是動態(tài)的——可以新增屬性也可以刪除屬性秩霍,但是對象經(jīng)常用來模擬靜態(tài)對象以及靜態(tài)類型語言中的“結(jié)構(gòu)體”。對象...
    Allen_HD閱讀 261評論 0 1
  • ??面向?qū)ο螅∣bject-Oriented,OO)的語言有一個標(biāo)志螺捐,那就是它們都有類的概念颠悬,而通過類可以創(chuàng)建任意...
    霜天曉閱讀 2,107評論 0 6
  • 準(zhǔn)備域名 域名注冊 域名解析 安裝 Seafile 安裝依賴環(huán)境 使用yum安裝 Python 及 MySQL: ...
    kingsfeng閱讀 1,059評論 2 1