成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

重學(xué)前端學(xué)習(xí)筆記(七)--JavaScript對(duì)象:面向?qū)ο筮€是基于對(duì)象?

mayaohua / 1171人閱讀

摘要:對(duì)象有狀態(tài)對(duì)象具有狀態(tài),同一對(duì)象可能處于不同狀態(tài)之下。中對(duì)象獨(dú)有的特色對(duì)象具有高度的動(dòng)態(tài)性,這是因?yàn)橘x予了使用者在運(yùn)行時(shí)為對(duì)象添改狀態(tài)和行為的能力。小結(jié)由于的對(duì)象設(shè)計(jì)跟目前主流基于類(lèi)的面向?qū)ο蟛町惙浅4?,?dǎo)致有不是面向?qū)ο筮@樣的說(shuō)法。

筆記說(shuō)明
重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專(zhuān)欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完整的可以加入winter的專(zhuān)欄學(xué)習(xí)【原文有winter的語(yǔ)音】,如有侵權(quán)請(qǐng)聯(lián)系我,郵箱:[email protected]
1、學(xué)習(xí)JavaScript面向?qū)ο髸r(shí)是否有這樣的疑惑?

為什么 JavaScript(直到 ES6)有對(duì)象的概念,但是卻沒(méi)有像其他的語(yǔ)言那樣,有類(lèi)的概念呢?

為什么在 JavaScript 對(duì)象里可以自由添加屬性,而其他的語(yǔ)言卻不能呢?

2、什么是面向?qū)ο螅?/b> 2.1、JavaScript 對(duì)象的特征 2.1.1、對(duì)象的特征(來(lái)自《面向?qū)ο蠓治雠c設(shè)計(jì)》一書(shū))

對(duì)象具有唯一標(biāo)識(shí)性:即使完全相同的兩個(gè)對(duì)象,也并非同一個(gè)對(duì)象。

對(duì)象有狀態(tài):對(duì)象具有狀態(tài),同一對(duì)象可能處于不同狀態(tài)之下。

對(duì)象具有行為:即對(duì)象的狀態(tài),可能因?yàn)樗男袨楫a(chǎn)生變遷。

關(guān)于第一點(diǎn):

var a1 = { a: 1 };
var a2 = { a: 1 };
console.log(a1 == a2); // false

關(guān)于第二、三點(diǎn):

c++中稱(chēng)"狀態(tài)和行為"為成員變量成員函數(shù)

java中則稱(chēng)它們?yōu)?b>屬性方法

javaScript中將狀態(tài)和行為統(tǒng)一抽象為屬性

winter舉了個(gè)例子,代碼如下:

var o = {
    d: 1,
    f() {
        console.log(this.d);
    }
};

上面代碼中,o是對(duì)象,d是一個(gè)屬性,而函數(shù)f也是一個(gè)屬性,只是寫(xiě)法不一樣,總結(jié)來(lái)說(shuō),在JavaScript中,對(duì)象的狀態(tài)和行為其實(shí)都被抽象為了屬性。

2.1.2、JavaScript 中對(duì)象獨(dú)有的特色
對(duì)象具有高度的動(dòng)態(tài)性,這是因?yàn)?JavaScript 賦予了使用者在運(yùn)行時(shí)為對(duì)象添改狀態(tài)和行為的能力。

舉例說(shuō)明運(yùn)行時(shí)如何向一個(gè)對(duì)象添加屬性:

var o = { a: 1 };
o.b = 2;
console.log(o.a, o.b); //1 2

為了提高抽象能力,JavaScript的屬性被設(shè)計(jì)成比別的語(yǔ)言更加復(fù)雜的形式,它提供了數(shù)據(jù)屬性和訪問(wèn)器屬性(getter/setter)兩類(lèi)。

2.2、JavaScript 對(duì)象的兩類(lèi)屬性 2.2.1、數(shù)據(jù)屬性

4個(gè)特征:

value:就是屬性的值.

writable:決定屬性能否被賦值.

enumerable:決定 for in 能否枚舉該屬性.

configurable:決定該屬性能否被刪除或者改變特征值.

2.2.2、訪問(wèn)器(getter/setter)屬性

2.2.2.1、4個(gè)特征:

getter:函數(shù)或 undefined,在取屬性值時(shí)被調(diào)用.

setter:函數(shù)或 undefined,在設(shè)置屬性值時(shí)被調(diào)用.

enumerable:決定 for in 能否枚舉該屬性.

configurable:決定該屬性能否被刪除或者改變特征值.

2.2.2.2、Object.getOwnPropertyDescripter 和 Object?.define?Property()

var o, d;

o = { get foo() { return 17; } };
d = Object.getOwnPropertyDescriptor(o, "foo");
// d {
//   configurable: true,
//   enumerable: true,
//   get: /*the getter function*/,
//   set: undefined
// }

o = { bar: 42 };
d = Object.getOwnPropertyDescriptor(o, "bar");
// d {
//   configurable: true,
//   enumerable: true,
//   value: 42,
//   writable: true
// }

o = {};
Object.defineProperty(o, "baz", {
  value: 8675309,
  writable: false,
  enumerable: false
});
d = Object.getOwnPropertyDescriptor(o, "baz");
// d {
//   value: 8675309,
//   writable: false,
//   enumerable: false,
//   configurable: false
// }

實(shí)際上 JavaScript 對(duì)象的運(yùn)行時(shí)是一個(gè)“屬性的集合”,屬性以字符串或者 Symbol 為 key,以數(shù)據(jù)屬性特征值或者訪問(wèn)器屬性特征值為 value。

2.3、小結(jié)

由于 JavaScript 的對(duì)象設(shè)計(jì)跟目前主流基于類(lèi)的面向?qū)ο蟛町惙浅4?,?dǎo)致有“JavaScript 不是面向?qū)ο蟆边@樣的說(shuō)法。

JavaScript 語(yǔ)言標(biāo)準(zhǔn)也已經(jīng)明確說(shuō)明,JavaScript 是一門(mén)面向?qū)ο蟮恼Z(yǔ)言,跟JavaScript 的高度動(dòng)態(tài)性的對(duì)象系統(tǒng)密不可分。

個(gè)人總結(jié)

看完winter的這篇文章深感自己的基礎(chǔ)之薄弱,越模糊的東西越要清楚其本質(zhì),才能保持對(duì)事物的正確判斷。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/54961.html

相關(guān)文章

  • 重學(xué)前端學(xué)習(xí)筆記)--JavaScript對(duì)象面向對(duì)象還是基于對(duì)象?

    摘要:對(duì)象有狀態(tài)對(duì)象具有狀態(tài),同一對(duì)象可能處于不同狀態(tài)之下。中對(duì)象獨(dú)有的特色對(duì)象具有高度的動(dòng)態(tài)性,這是因?yàn)橘x予了使用者在運(yùn)行時(shí)為對(duì)象添改狀態(tài)和行為的能力。小結(jié)由于的對(duì)象設(shè)計(jì)跟目前主流基于類(lèi)的面向?qū)ο蟛町惙浅4螅瑢?dǎo)致有不是面向?qū)ο筮@樣的說(shuō)法。 筆記說(shuō)明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專(zhuān)欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些...

    yy736044583 評(píng)論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記)--JavaScript對(duì)象面向對(duì)象還是基于對(duì)象?

    摘要:對(duì)象有狀態(tài)對(duì)象具有狀態(tài),同一對(duì)象可能處于不同狀態(tài)之下。中對(duì)象獨(dú)有的特色對(duì)象具有高度的動(dòng)態(tài)性,這是因?yàn)橘x予了使用者在運(yùn)行時(shí)為對(duì)象添改狀態(tài)和行為的能力。小結(jié)由于的對(duì)象設(shè)計(jì)跟目前主流基于類(lèi)的面向?qū)ο蟛町惙浅4?,?dǎo)致有不是面向?qū)ο筮@樣的說(shuō)法。 筆記說(shuō)明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專(zhuān)欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些...

    xingpingz 評(píng)論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記(八)--JavaScript中的原型和類(lèi)

    摘要:用構(gòu)造器模擬類(lèi)的兩種方法在構(gòu)造器中修改,給添加屬性修改構(gòu)造器的屬性指向的對(duì)象,它是從這個(gè)構(gòu)造器構(gòu)造出來(lái)的所有對(duì)象的原型。 筆記說(shuō)明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專(zhuān)欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完整的可以加入winter的專(zhuān)欄學(xué)習(xí)【原文有winter的語(yǔ)音】,如有侵權(quán)請(qǐng)聯(lián)系我,郵箱:kai...

    nanfeiyan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<