国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【JavaScript】【對(duì)象】屬性和方法的總結(jié)歸納

qiangdada / 3457人閱讀

摘要:構(gòu)造函數(shù)原型對(duì)象實(shí)例對(duì)象之間的關(guān)系錯(cuò)綜復(fù)雜,關(guān)于它們的屬性和方法很多,長(zhǎng)得也很像。表示能否修改屬性的值。屬性和方法以下的屬性和方法均以下面的代碼為例構(gòu)造函數(shù)指向原型對(duì)象,包含所有被實(shí)例共享的屬性和方法。

構(gòu)造函數(shù)、原型對(duì)象、實(shí)例對(duì)象之間的關(guān)系錯(cuò)綜復(fù)雜,關(guān)于它們的屬性和方法很多,長(zhǎng)得也很像。這里歸納出來(lái),方便記憶和查閱。

對(duì)象屬性類型 數(shù)據(jù)屬性

[[Configurable]]:表示能否通過(guò)delete刪除屬性從而重新定義屬性、能否修改屬性的特性、能否把屬性修改為訪問(wèn)器屬性。默認(rèn)值為true
[[Enumerable]]:表示是否可枚舉。默認(rèn)值為true
[[Writable]]:表示能否修改屬性的值。默認(rèn)值為true
[[Value]]:包含屬性的數(shù)據(jù)值,在這里讀寫屬性。默認(rèn)值為undefined

修改屬性的特性:Object.defineProperty()Object.defineProperties()。調(diào)用這兩個(gè)方法時(shí),如果不指定,configurableenumerablewritable特性的默認(rèn)值都是false

//定義一個(gè)屬性
var person = {};
Object.defineProperty(person, "name", {
    value: "hiyohoo",
    configurable: true,
    enumerable: true,
    writable: true
});

//定義多個(gè)屬性
var person = {};
Object.defineProperties(person, {
    name: {
        value: "hiyohoo"
    },
    age: {
        value: 24,
        configurable: true,
        writable: true
    }
});

獲取屬性的特性:Object.getOwnPropertyDescriptor()只能用于實(shí)例屬性,要取得原型屬性的描述符,需要在原型上使用該方法。

var descriptor = Object.getOwnPropertyDescriptor(person, "age");
alert(descriptor.writable);    //true
訪問(wèn)器屬性

[[Configurable]]
[[Enumerable]]
[[Get]]:讀取屬性時(shí)調(diào)用該函數(shù)。默認(rèn)值為undefined
[[Set]]:寫入屬性時(shí)調(diào)用該函數(shù)。默認(rèn)值為undefined

訪問(wèn)器屬性不能直接定義,必須使用Object.defineProperty()來(lái)定義。訪問(wèn)器屬性常用于改變?cè)搶傩裕渌麑傩砸矔?huì)變化的情況。

var book = {
    _year: 2004,    //屬性前面的下劃線記號(hào)常用于表示只能通過(guò)對(duì)象方法訪問(wèn)的屬性。
    edition: 1
};
Object.defineProperty(book, "year", {
    get: function() {
        return this._year;
    },
    set: function(newValue) {
        if (newValue > 2004) {
            this._year = newValue;
            this.edition += newValue - 2004;
        }
    }
});
book.year = 2016;
console.log(book.edition);    //13
屬性和方法

以下的屬性和方法均以下面的代碼為例:

var Person = function(name) {
    this.name = name;
};
Person.prototype.school = "HNU";
Person.prototype.sayName = function() {
    return this.name;
};

var person = new Person("hiyohoo");
構(gòu)造函數(shù)

prototype指向原型對(duì)象,包含所有被實(shí)例共享的屬性和方法。

console.log(Person.prototype);    //Person{}
原型對(duì)象

constructor指向構(gòu)造函數(shù)。

console.log(Person.prototype.constructor === Person);    //true

isPrototypeOf()判斷實(shí)例與原型之間的關(guān)系。

console.log(Person.prototype.isPrototypeOf(person));    //true
實(shí)例對(duì)象

constructor沿著原型鏈找到原型中的constructor屬性,最終指向構(gòu)造函數(shù)。

console.log(person.constructor === Person);    //true

__proto__Firefox、Safari、Chrome支持這個(gè)屬性,指向原型對(duì)象。

console.log(person.__proto__ === Person.prototype);    //true

hasOwnProperty()Object中繼承而來(lái),判斷屬性是否是實(shí)例的私有屬性,而不是繼承而來(lái)的共享屬性。

console.log(person.hasOwnProperty("name"));    //true
console.log(person.hasOwnProperty("school"));    //false
Object

Object.getPrototypeOf() ECMAScript 5中新增的方法,返回實(shí)例的原型。

console.log(Object.getPrototypeOf(person));    //Person{}

Object.keys() ECMAScript 5中新增的方法,返回一個(gè)包含所有可枚舉實(shí)例屬性的字符串?dāng)?shù)組。

console.log(Object.keys(person));    //["name"]
console.log(Object.keys(Person.prototype));    //["school", "sayName"]

Object.getOwnPropertyNames()返回所有實(shí)例屬性,無(wú)論是否可枚舉。

console.log(Object.getOwnPropertyNames(person));    //["name"]
console.log(Object.getOwnPropertyNames(Person.prototype));    //["constructor", "school", "sayName"]
操作符

delete刪除一個(gè)configurabletrue的私有屬性。

delete person.name;
delete person.school;

console.log(person.name);    //undefined
console.log(person.school);    //HNU

for-in返回所有能夠訪問(wèn)到的屬性。

for (p in person) {
    console.log(p);    //name school sayName
}

in對(duì)象能夠訪問(wèn)到屬性時(shí)返回true

console.log("name" in person);    //true
console.log("sayName" in person);    //true
console.log("age" in person);    //false

同時(shí)使用hasOwnProperty()方法和in操作符,可以確定一個(gè)屬性是存在于對(duì)象中還是存在于原型中。

function isPrototypeProperty(object, name) {
    if (!(name in object)) {
        return ("Can"t find " + """ + name + """);
    } else if (object.hasOwnProperty(name)) {
        return false;
    } else {
        return true;
    }
}

console.log(isPrototypeProperty(person, "name"));    //false
console.log(isPrototypeProperty(person, "school"));    //true
console.log(isPrototypeProperty(person, "age"));    //Can"t find "age"

instanceof用于判斷一個(gè)對(duì)象是否是某個(gè)對(duì)象的實(shí)例。

console.log(person instanceof Person);    //true
console.log(person instanceof Object);    //true

轉(zhuǎn)載請(qǐng)注明出處:https://segmentfault.com/a/1190000004561741

文章不定期更新完善,如果能對(duì)你有一點(diǎn)點(diǎn)啟發(fā),我將不勝榮幸。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/78825.html

相關(guān)文章

  • Javascript各種數(shù)組遍歷方法歸納總結(jié)兼容寫法

    摘要:主要用于枚舉對(duì)象數(shù)組遍歷效率最低的方法。當(dāng)前數(shù)組元素的值。傳遞給函數(shù)的初始值注意對(duì)于空數(shù)組是不會(huì)執(zhí)行回調(diào)函數(shù)的。 前言 PS: 2018/04/26 優(yōu)化一下排版,重新梳理一下方法,補(bǔ)充一些信息,刪除JQuery庫(kù)用法,只講解Javascript自帶的, for in 語(yǔ)句用于遍歷數(shù)組或者對(duì)象的屬性(對(duì)數(shù)組或者對(duì)象的屬性進(jìn)行循環(huán)操作)。主要用于枚舉對(duì)象, 數(shù)組遍歷效率最低的方法。 va...

    Sanchi 評(píng)論0 收藏0
  • js基礎(chǔ)歸納總結(jié)1

    摘要:局部變量在函數(shù)中聲明的變量,會(huì)成為函數(shù)的局部變量。局部變量的作用域是局部的只能在函數(shù)內(nèi)部訪問(wèn)它們。單獨(dú)的情況下,指的是全局對(duì)象。在事件中,指的是接收事件的元素。布爾值提供一種布爾數(shù)據(jù)類型。所有不具有真實(shí)值的即為布爾值為零負(fù)零空值。 閉包 閉包的優(yōu)點(diǎn):1.可以讀取函數(shù)內(nèi)部的變量2.這些變量的值始終保持在內(nèi)存中適用場(chǎng)景 作用域 作用域指的是有權(quán)訪問(wèn)的變量集合。在 JavaScript 中有...

    Jeff 評(píng)論0 收藏0
  • JavaScript知識(shí)架構(gòu)學(xué)習(xí)路徑(一)- 變量篇

    摘要:在此,我們首先根據(jù)變量的作用域,將變量劃分為三級(jí),具體是全局變量局部變量和參數(shù)變量。 【摘要】本文是專為JavaScript入門者而總結(jié)的,總體上將JavaScript的基礎(chǔ)部分分成了九大塊,分別是變量、運(yùn)算符、數(shù)組、流程控制結(jié)構(gòu)、字符串函數(shù)、函數(shù)基礎(chǔ)、DOM操作基礎(chǔ)、文檔對(duì)象模型DOM和正則表達(dá)式。 【關(guān)鍵字】變量、運(yùn)算符、數(shù)組、流程控制結(jié)構(gòu)、函數(shù)、DOM、正則表達(dá)式。 本篇文章的主...

    toddmark 評(píng)論0 收藏0
  • jQuery學(xué)習(xí)知識(shí)點(diǎn)總結(jié)歸納

    摘要:目前在前端開發(fā)所占的比重越來(lái)越高,在我們學(xué)習(xí)和開發(fā)的過(guò)程中都會(huì)去使用。下面把程序員雷雪松對(duì)的知識(shí)點(diǎn)總結(jié)和歸納分享給大家。過(guò)濾對(duì)同胞元素的搜索。將匹配元素集合縮減為集合中的最后一個(gè)元素。返回指定元素相對(duì)于其他指定元素的位置。 jQuery目前在Web前端開發(fā)所占的比重越來(lái)越高,在我們jQuery學(xué)習(xí)和開發(fā)的過(guò)程中都會(huì)去使用。jQuery幫我們解決了瀏覽器之間JS一些不兼容的地方和簡(jiǎn)化了原...

    JohnLui 評(píng)論0 收藏0
  • 一個(gè)關(guān)于對(duì)象引用bug引發(fā)對(duì)于引用類型及數(shù)組簡(jiǎn)單思考

    摘要:圖示如下而對(duì)于引用類型的復(fù)制可不是這樣這個(gè)復(fù)制只是將的引用賦值給,二者是屬于同一個(gè)引用,訪問(wèn)的都是堆內(nèi)存中的同一個(gè)對(duì)象,任何一個(gè)該引用的變量發(fā)生變化,會(huì)對(duì)其余使用該引用的變量也發(fā)生變化。 這兩天自己在寫代碼的時(shí)候,出現(xiàn)一個(gè)BUG,代碼如下: class Car { constructor(carId) { this.position =...

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

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

0條評(píng)論

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