淺析JavaScript中Object的方法

最近在看JavaScript原型時經(jīng)常會遇到Object的一些方法和屬性,特地去查看了相關資料,并將使用方法整理下來供參考印蔬。

及時總結

在瀏覽器控制臺輸入Object.就會出現(xiàn)如下圖所示的一些方法和屬性,其中也包含ES6新加入的屬性和方法,從中挑選一些常用的屬性和方法介紹戚嗅。

chrome瀏覽器下

1 . ** creat** 創(chuàng)建一個擁有指定原型和若干個指定屬性的對象。

Object.create(proto, [ propertiesObject ])

proto 一個對象枢舶,作為新創(chuàng)建對象的原型懦胞。
propertiesObject 可選。該參數(shù)對象是一組屬性與值凉泄,存放新創(chuàng)建對象的屬性和值

var animal = {age:0};
var cat = Object.create(animal, {
    name: {
        value: 'tom', // cat的屬性name的值
        writable: true, //當且僅當writable 為 true 時躏尉,cat的name屬性才能被賦值運算符改變,默認為 false
        configurable: true, // 當且僅當該屬性的 configurable 為 true 時后众,該屬性描述符才能夠被改變胀糜,也能夠被刪除颅拦,默認為 false
        enumerable: true // 當且僅當該屬性的 enumerable 為 true 時教藻,該屬性才能夠出現(xiàn)在對象的枚舉屬性中距帅,默認為 false
        }
});
console.log(cat.name); // tom
console.log(cat.age); // 0

在創(chuàng)建cat對象時以animal作為原型,name是cat的一個屬性

2 . defineProperty 直接在一個對象上定義一個新屬性怖竭,或者修改一個已經(jīng)存在的屬性锥债, 并返回這個對象。

Object.defineProperty(obj, prop, descriptor)

obj : 需要定義屬性的對象痊臭。
prop : 需定義或修改的屬性的名字哮肚。
descriptor : 將被定義或修改的屬性的描述符。

var cat = {age:10};
console.log(cat.age); // 10
Object.defineProperty(cat, 'age', {  
    enumerable: false,
    configurable: false, 
    writable: false,
    value: 4
});
console.log(cat.age); // 4

可以看出將cat的age屬性值由10修改為4

3 . defineProperties 在一個對象上添加或修改一個或者多個自有屬性广匙,并返回該對象允趟。

var cat = {age: 10, name: 'tom'};
console.log(cat.age);
console.log(cat.name);
Object.defineProperties(cat, { 
    age: {    
        enumerable: false,
        configurable: false, 
        writable: false, 
        value: 4   
    },    
    name: {  
        enumerable: false,  
        configurable: false,    
        writable: false,  
        value: 'jack' 
    }
});
console.log(cat.age);
console.log(cat.name);

4 . getPrototypeOf 返回指定對象的原型(也就是該對象內(nèi)部屬性[[Prototype]]的值)。

Object.getPrototypeOf(object)

*object : 返回該對象的原型鸦致。 *

var cat = {age: 10, name: 'tom'};
var obj = Object.create(cat);
console.log(Object.getPrototypeOf(obj)); // { age: 10, name: 'tom' }

5 . getOwnPropertyDescriptor 返回指定對象上一個自有屬性對應的屬性描述符潮剪。(自有屬性指的是直接賦予該對象的屬性,不需要從原型鏈上進行查找的屬性)

Object.getOwnPropertyDescriptor(obj, prop)

obj 在該對象上查看屬性
prop 一個屬性名稱分唾,該屬性的屬性描述符將被返回

var cat = {age: 10, name: 'tom'};
var result = Object.getOwnPropertyDescriptor(cat,'age');
console.log(result);
/* { 
  value: 10,
  writable: true,
  enumerable: true,
  configurable: true
 }
*/

6 . keys 方法會返回一個由給定對象的所有可枚舉自身屬性的屬性名組成的數(shù)組

Object.keys(obj)

obj : 返回該對象的所有可枚舉自身屬性的屬性名.

var cat = {age: 10, name: 'tom'};
var result = Object.keys(cat);
console.log(result); // [ 'age', 'name' ]

7 . preventExtensions 方法讓一個對象變的不可擴展抗碰,也就是永遠不能再添加新的自身屬性。

Object.preventExtensions(obj)

obj : 將要變得不可擴展的對象

var cat = {age: 10, name: 'tom'};
Object.preventExtensions(cat);
cat.sex='female';
console.log(cat); // { age: 10, name: 'tom' }

8 . isExtensible 方法判斷一個對象是否是可擴展的(是否可以在它上面添加新的屬性)绽乔。

Object.isExtensible(obj)

obj : 需要檢測的對象

var person = {name: 'douqing'};
var cat = {age: 10, name: 'tom'};
Object.preventExtensions(cat);
cat.sex='female';
console.log(cat); //  { age: 10, name: 'tom' }
console.log(Object.isExtensible(cat)); // false
console.log(Object.isExtensible(person)); // true

9 . assign 方法可以把任意多個的源對象自身的可枚舉屬性拷貝給目標對象弧蝇,然后返回目標對象。

Object.assign(target, ...sources)

target : 目標對象折砸。
sources : 任意多個源對象看疗。

var cat = {age: 10, name: 'tom'};
var result = Object.assign({}, cat);
console.log(result); // { age: 10, name: 'tom' }

10 . is 方法用來判斷兩個值是否是同一個值。

Object.is(value1, value2)

value1 需要比較的第一個值睦授。
value2 需要比較的第二個值两芳。

var cat = {age: 10, name: 'tom'};
var person = {name: 'douqing'};
console.log(Object.is(1, 1)); // true
console.log(Object.is(person, cat)); // false

更多詳細比較>>

上面只是一些Object中常用的屬性方法,想要了解更多的可以點擊這里

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末去枷,一起剝皮案震驚了整個濱河市怖辆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌删顶,老刑警劉巖疗隶,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異翼闹,居然都是意外死亡,警方通過查閱死者的電腦和手機蒋纬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門猎荠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坚弱,“玉大人,你說我怎么就攤上這事关摇』囊叮” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵输虱,是天一觀的道長些楣。 經(jīng)常有香客問我,道長宪睹,這世上最難降的妖魔是什么愁茁? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮亭病,結果婚禮上鹅很,老公的妹妹穿的比我還像新娘。我一直安慰自己罪帖,他們只是感情好促煮,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著整袁,像睡著了一般菠齿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坐昙,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天绳匀,我揣著相機與錄音,去河邊找鬼民珍。 笑死襟士,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的嚷量。 我是一名探鬼主播陋桂,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蝶溶!你這毒婦竟也來了嗜历?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤抖所,失蹤者是張志新(化名)和其女友劉穎梨州,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體田轧,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡暴匠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了傻粘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片每窖。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡帮掉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出窒典,到底是詐尸還是另有隱情蟆炊,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布瀑志,位于F島的核電站涩搓,受9級特大地震影響,放射性物質發(fā)生泄漏劈猪。R本人自食惡果不足惜昧甘,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望岸霹。 院中可真熱鬧疾层,春花似錦、人聲如沸贡避。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽刮吧。三九已至湖饱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杀捻,已是汗流浹背井厌。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留致讥,地道東北人仅仆。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像垢袱,于是被迫代替她去往敵國和親墓拜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

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

  • 1.屬性的簡潔表示法 允許直接寫入變量和函數(shù) 上面代碼表明请契,ES6 允許在對象之中咳榜,直接寫變量。這時爽锥,屬性名為變量...
    雨飛飛雨閱讀 1,136評論 0 3
  • 此文章用于歸納Object的所有方法 在JavaScript中涌韩,object是所有對象的基礎(原型鏈的頂端),所以...
    moonburn閱讀 654評論 0 5
  • 屬性的簡潔表示法 ES6允許直接寫入變量和函數(shù)氯夷,作為對象的屬性和方法臣樱。這樣的書寫更加簡潔。 上面代碼表明,ES6允...
    呼呼哥閱讀 2,925評論 0 2
  • 最近幾天忙而亂雇毫,事瑣而多奢啥,無論是聽到的事,見過的人嘴拢,還是很有啟發(fā)的,將隨想記錄如下寂纪,且給自己做個提醒席吴。 1.一個人...
    莫莫queen閱讀 110評論 1 3
  • 前言 Redis作為cache服務器,支持多種數(shù)據(jù)結構捞蛋,String孝冒、List、Hash拟杉、Set庄涡、Zset。多種數(shù)...
    小小小碼農(nóng)閱讀 6,042評論 0 1