object 用法總結(jié)

Object.assign()
該方法用于將所有可枚舉屬性的值從一個或多個源對象復(fù)制到目標(biāo)對象惠窄。它將返回目標(biāo)對象。
語法:
Object.assign(target,…sources)
參數(shù)說明:
target:目標(biāo)對象漾橙。
…sources:源對象泼掠。
返回值:
目標(biāo)對象僵控。

例子:

  name: "lisa",
  age: 12,
  color: "red"
};
var c = Object.assign({ address: "beijing" }, a);
console.log(c);//結(jié)果為{address: "beijing", name: "lisa", age: 12, color: "red"}
console.log(a);//{name: "lisa", age: 12, color: "red"}

Object.assign并不會改變源對象港华,但是會改變目標(biāo)對象刻蟹,如下例子:

  name: "lisa",
  age: 12,
  color: "red"
};
var b={
    job:"teacher"
}
var c = Object.assign(b, a);
console.log(b);//結(jié)果{job: "teacher", name: "lisa", age: 12, color: "red"}

上述例子中b的結(jié)果被改變了。

注:
如果目標(biāo)對象中的屬性具有相同的鍵淘捡,則屬性將被源中的屬性覆蓋藕各。后來的源的屬性將類似地覆蓋早先的屬性。

Object.assign 方法只會拷貝源對象自身的并且可枚舉的屬性到目標(biāo)對象焦除。該方法使用源對象的[[Get]]和目標(biāo)對象的[[Set]]激况,所以它會調(diào)用相關(guān) getter 和 setter。因此,它分配屬性誉碴,而不僅僅是復(fù)制或定義新的屬性宦棺。如果合并源包含getter,這可能使其不適合將新屬性合并到原型中黔帕。為了將屬性定義(包括其可枚舉性)復(fù)制到原型代咸,應(yīng)使用Object.getOwnPropertyDescriptor()和Object.defineProperty() 。
在出現(xiàn)錯誤的情況下成黄,例如呐芥,如果屬性不可寫,會引發(fā)TypeError奋岁,如果在引發(fā)錯誤之前添加了任何屬性思瘟,則可以更改target對象。
注意闻伶,Object.assign 不會跳過那些值為 null 或 undefined 的源對象滨攻。

Object.key()

讀取對象的所有屬性。
1.例如蓝翰,傳入一個對象光绕,返回包含對象可枚舉的屬性

    name: 'lisa',
    age: 12,
    say: function() {
        alert("Hello World");
    }
}
console.log(Object.keys(obj));

打印結(jié)果:

注:Object.keys()的結(jié)果為一個數(shù)組,上面的里面還可以通過length讀取屬性的個數(shù)畜份,Object.keys(obj).length輸出結(jié)果為3

2.例如诞帐,傳入一個字符串,返回字符串索引值
var myStr="Hello World"
console.log(Object.keys(myStr));
//打印結(jié)果為["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]
#####3.例如爆雹,傳入一個數(shù)組停蕉,返回索引值

var arr=['a','b','c'];
console.log(Object.keys(arr));
//結(jié)果為['0','1','2']
#####4.例如,構(gòu)造函數(shù)钙态,返回空數(shù)組或者屬性名

function Demo(name, age) {
    this.name = name;
    this.age = age;
}
console.log(Object.keys(Demo));
//結(jié)果為[]是一個空數(shù)組

Object.entries()
語法:
Object.entries(obj)
參數(shù):
obj:可以返回其可枚舉屬性的鍵值對的對象慧起。
返回值:
給定對象自身可枚舉屬性的鍵值對數(shù)組。注意:返回的是一個數(shù)組驯绎。
描述:
Object.entries()返回一個數(shù)組完慧,其元素是與直接在object上找到的可枚舉屬性鍵值對相對應(yīng)的數(shù)組谋旦。屬性的順序與通過手動循環(huán)對象的屬性值所給出的順序相同剩失。
Object.entries()方法返回一個給定對象自身可枚舉屬性的鍵值對數(shù)組,其排列與使用 for…in 循環(huán)遍歷該對象時返回的順序一致(區(qū)別在于 for-in 循環(huán)也枚舉原型鏈中的屬性)册着。
如下例子:

const obj1 = { name: "lisa", age: 12, color: "red" };
console.log(Object.entries(obj1));//[["name", "lisa"],["age", 12],["color", "red"]]
Object.getPrototypeOf()
該方法返回參數(shù)對象的原型拴孤,這是獲取原型對象的標(biāo)準(zhǔn)方法。
var F=function(){}
var f=new F();
console.log(Object.getPrototypeOf(f)===F.prototype);
//結(jié)果為true
解釋:上面代碼中甲捏,實例對象f的原型是F.prototype
下面幾種特殊對象的原型:
// 空對象的原型是Object.prototype
console.log(Object.getPrototypeOf({})===Object.prototype);
//結(jié)果為true
//Object.prototype的原型是null
console.log(Object.getPrototypeOf(Object.prototype)===null);
// 結(jié)果為true
//函數(shù)的原型是Function.prototype
function f(){}
console.log(Object.getPrototypeOf(f)===Function.prototype);
//結(jié)果為true

Object.setPrototypeOf()
該方法為參數(shù)對象設(shè)置原型演熟,返回該參數(shù)對象,它接受2個參數(shù),第一個是現(xiàn)有對象芒粹,第二個是原型對象兄纺。

var a={age:12};
var b={name:'lisa'};
var c=Object.setPrototypeOf(a,b);//設(shè)置b為a的原型對象
console.log(c);//結(jié)果為{age:12},返回第一個參數(shù)的對象
console.log(Object.getPrototypeOf(a)===b);//結(jié)果為true
console.log(a.name);//結(jié)果為'lisa',此時對象a可以直接調(diào)用對象b中的屬性

注釋:上面代碼中Object.setPrototypeOf方法將對象a的原型設(shè)置為對象b化漆,因此a可以共享b的屬性估脆。
new命令可以使用Object.setPrototypeOf方法模擬如下:

var F = function() {
    this.foo = "bar";
}
var f = new F();
//等同于
var f = Object.setPrototypeOf({}, F.prototype);
F.call(f);
console.log(f)

上面代碼中,new命令新建實例對象座云,其實可以分成兩步疙赠。1.將一個空對象的原型設(shè)為構(gòu)造函數(shù)的prototype屬性(上例是F.prototype),2.將構(gòu)造函數(shù)內(nèi)部的this綁定這個空對象朦拖,然后執(zhí)行構(gòu)造函數(shù)圃阳,使得定義在this上面的方法和屬性(上例是this.foo),都轉(zhuǎn)移到這個空對象上璧帝。

Object.create()
生成實例對象的常用方法捍岳,使用new命令讓構(gòu)造函數(shù)返回一個實例,但是很多時候睬隶,只能拿到一個實例對象祟同,它可能根本不是由構(gòu)造函數(shù)生成的,那么能不能從一個實例對象理疙,生成另一個實例對象呢晕城?
js提供了Object.create()方法,來滿足這種需求窖贤,該方法接受一個對象作為參數(shù)砖顷,然后以它為原型,返回一個實例對象赃梧,該實例完全繼承原型對象的屬性滤蝠。

var A = {
    say: function() {
        console.log("我說點啥?")
    }
}
//使用A作為B的原型,此時B將會擁有A的屬性和方法
var B = Object.create(A);
//判斷B的原型對象是不是A
console.log(Object.getPrototypeOf(B) === A); //結(jié)果為true
//B可以直接調(diào)用A的方法
B.say(); //結(jié)果為”我說點啥?“
//判斷A和B的方法是不是同一個?
console.log(B.say === A.say); //結(jié)果為true

上面代碼中授嘀,Object.create方法以A對象為原型物咳,生成了B對象,B繼承了A的所有屬性和方法蹄皱。

使用Object.create方法的時候览闰,必須提供對象原型,即參數(shù)不能為空巷折,或者不是對象压鉴,否則會報錯。
如下會報錯:
Object.create()锻拘;
Object.create(123)

Object.create方法生成的新對象油吭,動態(tài)繼承了原型击蹲。在原型上添加或修改任何方法,會立刻反映在新對象之上婉宰。
例如:

var obj1 = {
    p: 1
};
var obj2 = Object.create(obj1);
obj1.p = 2;//修改obj1的p屬性的值
console.log(obj2.p);//打印結(jié)果為2

上面代碼中歌豺,obj2繼承obj1,修改obj1會影響到obj2

除了對象的原型心包,Object.create方法還可以接受第二個參數(shù)世曾,該參數(shù)是一個屬性描述對象,它所描述的對象屬性谴咸,會添加到實例對象轮听,作為該對象自身的屬性。

var obj = Object.create({}, {
    p1: {
        value:123,
        enumerable:true,
        configurable:true,
        writable:true
    },
    p2:{
        value:'hello',
        enumerable:true,
        configurable:true,
        writable:true
    }
});
//等同于
var obj = Object.create({});
obj.p1 = 123;
obj.p2 = 'hello';

Object.create方法生成的對象岭佳,繼承了它的原型對象的構(gòu)造函數(shù)血巍。

function A() {}
var a = new A();
var b = Object.create(a);
b.constructor === A // true
b instanceof A // true

上面代碼中,b對象的原型是a對象珊随,因此繼承了a對象的構(gòu)造函數(shù)A述寡。

Object.freeze()
Object.freeze() 方法可以凍結(jié)一個對象,凍結(jié)指的是不能向這個對象添加新的屬性叶洞,不能修改其已有屬性的值鲫凶,不能刪除已有屬性,以及不能修改該對象已有屬性的可枚舉性衩辟、可配置性螟炫、可寫性。該方法返回被凍結(jié)的對象艺晴。

語法:
Object.freeze(obj)
參數(shù):
obj:要被凍結(jié)的對象
返回值:
被凍結(jié)的對象昼钻。
描述:
被凍結(jié)對象自身的所有屬性都不可能以任何方式被修改。任何修改嘗試都會失敗封寞,無論是靜默地還是通過拋出TypeError異常(最常見但不僅限于strict mode)然评。
數(shù)據(jù)屬性的值不可更改,訪問器屬性(有g(shù)etter和setter)也同樣(但由于是函數(shù)調(diào)用狈究,給人的錯覺是還是可以修改這個屬性)碗淌。如果一個屬性的值是個對象,則這個對象中的屬性是可以修改的抖锥,除非它也是個凍結(jié)對象亿眠。數(shù)組作為一種對象,被凍結(jié)宁改,其元素不能被修改缕探。沒有數(shù)組元素可以被添加或移除。

這個方法返回傳遞的對象还蹲,而不是創(chuàng)建一個被凍結(jié)的副本。

const obj1 = { name: "lisa", age: 12, color: "red" };
Object.freeze(obj1);//凍結(jié)obj1
obj1.name="coco";//修改obj1的name屬性值,此時會報錯谜喊,因為obj1的屬性被凍結(jié)了
delete obj1.age;//報錯潭兽,不能刪除Obj1的屬性
obj1.adress="beijing";//報錯,不能添加給obj1屬性

Object.isFrozen()
該方法判斷一個對象是否被凍結(jié)斗遏。
語法:
Object.isFrozen(obj)
參數(shù):
obj:被檢測的對象
返回值:
表示給定對象是否被凍結(jié)的Boolean山卦。
描述:
一個對象是凍結(jié)的是指它不可擴展,所有屬性都是不可配置的诵次,且所有數(shù)據(jù)屬性(即沒有g(shù)etter或setter組件的訪問器的屬性)都是不可寫的账蓉。
例如:

var obj={name:"coco",age:12};
Object.freeze(obj);
console.log(Object.isFrozen(obj));//結(jié)果為true

Object.values()
方法返回一個給定對象自身的所有可枚舉屬性值的數(shù)組,值的順序與使用for…in循環(huán)的順序相同 ( 區(qū)別在于 for-in 循環(huán)枚舉原型鏈中的屬性 )逾一。
語法:
Object.values(obj)
參數(shù):
obj:被返回可枚舉屬性值的對象铸本。
返回值:
一個包含對象自身的所有可枚舉屬性值的數(shù)組。
描述:
Object.values()返回一個數(shù)組遵堵,其元素是在對象上找到的可枚舉屬性值箱玷。屬性的順序與通過手動循環(huán)對象的屬性值所給出的順序相同。

如下例子:

var obj = {
  name: "lisa",
  color: "red",
  age: 12
};
console.log(Object.values(obj));//結(jié)果為["lisa", "red", 12]

Object.prototype.isPrototypeOf()
實例對象的isPrototypeOf方法陌宿,用來判斷該對象是否為參數(shù)對象的原型锡足。

//創(chuàng)建一個空對象m1
var m1 = {}
//創(chuàng)建一個對象m2,使用m1作為m2的原型
var m2 = Object.create(m1);
//創(chuàng)建一個m3壳坪,使用m2作為m3的原型
var m3=Object.create(m2);
//使用isPrototypeOf來判斷m2是否為m3的原型
console.log(m2.isPrototypeOf(m3));//結(jié)果為true
//使用isPrototypeOf來判斷m1是否為m3的原型
console.log(m1.isPrototypeOf(m3));//結(jié)果為true

上面代碼中m1和m2都是m3的原型舶得,這表明只要實例對象處在參數(shù)對象的原型鏈上,isPrototypeOf方法都返回true.

Object.prototype. _ _ proto_ _
實例對象的proto屬性(前后各兩個下劃線)爽蝴,返回該對象的原型扩灯。該屬性可讀寫。

var obj = {};
var p = {};
obj.__proto__ = p;
Object.getPrototypeOf(obj) === p // true

上面代碼通過proto屬性霜瘪,將p對象設(shè)為obj對象的原型珠插。
根據(jù)語言標(biāo)準(zhǔn),proto屬性只有瀏覽器才需要部署颖对,其他環(huán)境可以沒有這個屬性捻撑。它前后的兩根下劃線,表明它本質(zhì)是一個內(nèi)部屬性缤底,不應(yīng)該對使用者暴露顾患。因此,應(yīng)該盡量少用這個屬性个唧,而是用Object.getPrototypeof()和Object.setPrototypeOf()江解,進(jìn)行原型對象的讀寫操作。
原型鏈可以用proto很直觀地表示徙歼。

var A = {
  name: '張三'
};
var B = {
  name: '李四'
};

var proto = {
  print: function () {
    console.log(this.name);
  }
};

A.__proto__ = proto;
B.__proto__ = proto;

A.print() // 張三
B.print() // 李四

A.print === B.print // true
A.print === proto.print // true
B.print === proto.print // true

上面代碼中犁河,A對象和B對象的原型都是proto對象鳖枕,它們都共享proto對象的print方法。也就是說桨螺,A和B的print方法宾符,都是在調(diào)用proto對象的print方法。

如上所述灭翔,proto屬性指向當(dāng)前對象的原型對象魏烫,即構(gòu)造函數(shù)的prototype屬性。

//創(chuàng)建一個構(gòu)造函數(shù)
var obj = function() {
    this.name = 'lisa';
}
//實例化一個對象
var m1 = new obj();
// 判斷實例對象m1的__proto__是否是構(gòu)造函數(shù)的prototype
console.log(m1.__proto__ === obj.prototype); //結(jié)果為true
//判斷實例對象m1的__proto__是否是當(dāng)前構(gòu)造函數(shù)的屬性肝箱,m1.constructor.prototype
console.log(m1.__proto__ === m1.constructor.prototype); //結(jié)果為true

```上面的代碼首先創(chuàng)建了一個m1實例對象哄褒,它的__proto__屬性,指向構(gòu)造函數(shù)(obj或m1.constructor)的prototype屬性煌张。因此呐赡,獲取實例對象m1的原型對象,有三中方法:
(1)m1.proto
(2)m1.constructor.prototype
(3)Object.getPrototypeOf(m1);
上面三種方法之中唱矛,前兩種都不是很可靠罚舱。__proto__屬性只有瀏覽器才需要部署,其他環(huán)境可以不部署绎谦。而m1.constructor.prototype在手動改變原型對象時管闷,可能會失效。推薦使用第三種Object.getPrototypeOf方法窃肠,獲取原型對象包个。

Object.getOwnPropertyNames()
該方法返回一個數(shù)組,成員是參數(shù)對象本身的所有屬性的鍵名冤留,不包含繼承的屬性鍵名碧囊。

console.log(Object.getOwnPropertyNames(Date));
//結(jié)果為 ["length", "name", "prototype", "now", "parse", "UT

上面代碼中,Object.getOwnPropertyNames方法返回Date所有自身的屬性名纤怒。

對象本身的屬性之中糯而,有的是可以遍歷的(enumerable),有的是不可以遍歷的泊窘。Object.getOwnPropertyNames方法返回所有鍵名熄驼,不管是否可以遍歷。只獲取那些可以遍歷的屬性烘豹,使用Object.keys方法瓜贾。

Object.keys(Date) //結(jié)果為一個空數(shù)組 []

上面代碼表明,Date對象所有自身的屬性携悯,都是不可以遍歷的祭芦。

Object.prototype.hasOwnProperty()
對象實例的hasOwnProperty方法返回一個布爾值,用于判斷某個屬性定義在對象自身憔鬼,還是定義在原型鏈上龟劲。

Date.hasOwnProperty('length') // true
Date.hasOwnProperty('toString') // false

上面代碼表明胃夏,Date.length(構(gòu)造函數(shù)Date可以接受多少個參數(shù))是Date自身的屬性,Date.toString是繼承的屬性咸灿。另外构订,hasOwnProperty方法是 JavaScript 之中唯一一個處理對象屬性時侮叮,不會遍歷原型鏈的方法避矢。

對象中的數(shù)據(jù)屬性(數(shù)據(jù)描述符)
數(shù)據(jù)屬性有4個描述內(nèi)部屬性的特性:
(1)configurable
定義:表示能否通過delete刪除此屬性,能否修改屬性的特性囊榜,或能否修改把屬性修改為訪問器屬性审胸,如果直接使用字面量定義對象,默認(rèn)值為true

var person = {}
Object.defineProperty(person, 'name', {
configurable: false,
value: 'lisa'
})
delete person.name; //會報錯卸勺,configurable為false不能刪除

(2)enumerable
定義:表示該屬性是否可枚舉砂沛,即是否通過for-in循環(huán)或Object.keys()返回屬性,如果直接使用字面量定義對象曙求,默認(rèn)值為true
(3)writable
定義:能否修改屬性的值碍庵,如果直接使用字面量定義對象,默認(rèn)值為true
(4)value
定義:該屬性對應(yīng)的值悟狱,默認(rèn)為undefined

訪問器屬性(存取描述符)
訪問器屬性也有4個描述內(nèi)部屬性的特性
(1)configurable
定義:和數(shù)據(jù)屬性的[[Configurable]]一樣静浴,表示能否通過delete刪除此屬性,能否修改屬性的特性挤渐,或能否修改把屬性修改為訪問器屬性苹享,如果直接使用字面量定義對象,默認(rèn)值為true
(2)enumerable
定義:和數(shù)據(jù)屬性的[[Configurable]]一樣浴麻,表示該屬性是否可枚舉得问,即是否通過for-in循環(huán)或Object.keys()返回屬性,如果直接使用字面量定義對象软免,默認(rèn)值為true
(3)get
定義:一個給屬性提供 getter 的方法(訪問對象屬性時調(diào)用的函數(shù),返回值就是當(dāng)前屬性的值)宫纬,如果沒有 getter 則為 undefined。該方法返回值被用作屬性值膏萧。默認(rèn)為 undefined
(4)set
定義:一個給屬性提供 setter 的方法(給對象屬性設(shè)置值時調(diào)用的函數(shù))漓骚,如果沒有 setter 則為 undefined。該方法將接受唯一參數(shù)向抢,并將該參數(shù)的新值分配給該屬性认境。默認(rèn)為 undefined

Object.defineProperty()
功能:
方法會直接在一個對象上定義一個新屬性,或者修改一個對象的現(xiàn)有屬性挟鸠, 并返回這個對象叉信。如果不指定configurable, writable, enumerable ,則這些屬性默認(rèn)值為false艘希,如果不指定value, get, set硼身,則這些屬性默認(rèn)值為undefined
語法:
Object.defineProperty(obj, prop, descriptor)
參數(shù)說明:
obj: 需要被操作的目標(biāo)對象
prop: 目標(biāo)對象需要定義或修改的屬性的名稱
descriptor: 將被定義或修改的屬性的描述符
代碼如下:

//定義一個名為obj對象
var obj = new Object();
//為對象obj定義一個屬性名為name,然后對name進(jìn)行描述
Object.defineProperty(obj, 'name', {
configurable: false, //能否通過delete刪除name屬性硅急,能否修改屬性的特性,能否修改把屬性修改為訪問器屬性
writable: true, //能否修改屬性的值
enumerable: true, //該屬性是否可枚舉佳遂,即是否通過for...in循環(huán)或Object.keys()返回屬性
value: 'lisa' //該屬性對應(yīng)的值
})
console.log(obj.name);

Object.defineProperties()
功能:
方法直接在一個對象上定義一個或多個新的屬性或修改現(xiàn)有屬性营袜,并返回該對象。
語法:
Object.defineProperties(obj, props)
參數(shù)說明:
obj: 將要被添加屬性或修改屬性的對象
props: 該對象的一個或多個鍵值對定義了將要為對象添加或修改的屬性的具體配置

var obj = new Object();
Object.defineProperties(obj, {
name: {
value: '張三',
configurable: false,
writable: true,
enumerable: true
},
age: {
value: 18,
configurable: true
}
})
console.log(obj.name, obj.age) // 張三, 18

Object.getOwnPropertyDescriptor()
功能:
該方法返回指定對象上一個自有屬性對應(yīng)的屬性描述符丑罪。(自有屬性指的是直接賦予該對象的屬性荚板,不需要從原型鏈上進(jìn)行查找的屬性),即返回對象的屬性描述。
語法:
Object.getOwnPropertyDescriptor(obj, prop)
參數(shù)說明:
obj: 需要查找的目標(biāo)對象
prop: 目標(biāo)對象內(nèi)屬性名稱

var person = {
name: '張三',
age: 12
}
var des = Object.getOwnPropertyDescriptor(person, 'name');
console.log(des);
// 結(jié)果如下:{value: "張三", writable: true, enumerable: true, configurable: true}

功能:
所指定對象的所有自身屬性的描述符吩屹,如果沒有任何自身屬性跪另,則返回空對象。
語法:
Object.getOwnPropertyDescriptors(obj)
參數(shù)說明:
obj: 需要查找的目標(biāo)對象

var person = {
name: '張三',
age: 12
}
var des = Object.getOwnPropertyDescriptors(person);
console.log(des);
// 結(jié)果如下:
// {
// name: {
// configurable: true
// enumerable: true
// value: "張三"
// writable: true
// },
// age: {
// configurable: true
// enumerable: true
// value: 12
// writable: true
// }
// }

在對象中添加存取描述符屬性
// 定義一個對象obj
var obj = {}
// 定義一個變量a
var a = 1;
// 定義一個變量b
var b;
//為obj對象設(shè)置一個m屬性
Object.defineProperty(obj, 'm', {
configurable: true,
enumerable: true,
//添加存取屬性煤搜,當(dāng)讀取屬性值時免绿,調(diào)用get方法
get: function() {
return a + 1;
},
//當(dāng)設(shè)置屬性時,調(diào)用set方法
set: function(i) {
a = i + 2;
b = i + 1;
}
})
console.log(obj.m); //調(diào)用屬性的get方法擦盾,結(jié)果為2
//為屬性從新設(shè)置一個值嘲驾,此時會調(diào)用set方法
obj.m = 4; //參數(shù)i的值就是4
console.log(a); //打印結(jié)果為6,a=i+2;i的值是4迹卢,所以a=6
console.log(b); //打印結(jié)果為5,b=i+1;i的值是4,所以b=5

注意:
1.getter和setter可以不同時使用,但在嚴(yán)格模式下只其中一個,會拋出錯誤
2.數(shù)據(jù)描述符與存取描述符不可混用,會拋出錯誤

value不能和get和set同時使用辽故。
如下:

var obj = {}
var a = 1;
var b;
Object.defineProperty(obj, 'm', {
value:'123',//切記不能使用value和get,set同時使用,會報錯
get: function() {
return a;
},
set: function(i) {
b = i + 1;
}
})

詳細(xì)解讀set和get訪問器
set是給屬性賦值婶希,get是取屬性的值榕暇,get是得到 一般是要返回的 set 是設(shè)置 不用返回

// 定義一個函數(shù)person
function person() {
// 定義一個變量age,值為18
var age = 18;
// 為當(dāng)前函數(shù)定義一個personAge屬性
Object.defineProperty(this, "personAge", {
//為其設(shè)置一個get訪問器喻杈,當(dāng)讀取該屬性時調(diào)用get
get: function() {
return age - 10;
},
//為其設(shè)置一個set訪問器彤枢,當(dāng)更新該屬性時調(diào)用set
set: function(v) {
age = v;
}
})
}
//實例化person對象
var p = new person();
//讀取personAge的值,此時會調(diào)用get中的方法
console.log(p.personAge); //打印結(jié)果為8
//重新為屬性personAge設(shè)置一個值筒饰,此時會調(diào)用set中的方法
p.personAge = 1994;
console.log(p.personAge); //打印結(jié)果為1984

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缴啡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子瓷们,更是在濱河造成了極大的恐慌业栅,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谬晕,死亡現(xiàn)場離奇詭異碘裕,居然都是意外死亡,警方通過查閱死者的電腦和手機攒钳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門帮孔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事文兢∥钫叮” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵姆坚,是天一觀的道長澳泵。 經(jīng)常有香客問我,道長兼呵,這世上最難降的妖魔是什么兔辅? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮萍程,結(jié)果婚禮上幢妄,老公的妹妹穿的比我還像新娘兔仰。我一直安慰自己茫负,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布乎赴。 她就那樣靜靜地躺著忍法,像睡著了一般。 火紅的嫁衣襯著肌膚如雪榕吼。 梳的紋絲不亂的頭發(fā)上饿序,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音羹蚣,去河邊找鬼原探。 笑死,一個胖子當(dāng)著我的面吹牛顽素,可吹牛的內(nèi)容都是我干的咽弦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼胁出,長吁一口氣:“原來是場噩夢啊……” “哼型型!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起全蝶,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤闹蒜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后抑淫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绷落,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年始苇,在試婚紗的時候發(fā)現(xiàn)自己被綠了砌烁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡埂蕊,死狀恐怖往弓,靈堂內(nèi)的尸體忽然破棺而出疏唾,到底是詐尸還是另有隱情,我是刑警寧澤函似,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布槐脏,位于F島的核電站,受9級特大地震影響撇寞,放射性物質(zhì)發(fā)生泄漏顿天。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一蔑担、第九天 我趴在偏房一處隱蔽的房頂上張望牌废。 院中可真熱鬧,春花似錦啤握、人聲如沸鸟缕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽懂从。三九已至,卻和暖如春蹲蒲,著一層夾襖步出監(jiān)牢的瞬間番甩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工届搁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缘薛,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓卡睦,卻偏偏與公主長得像宴胧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子么翰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353