/*
* 這是一張 JavaScript 代碼草稿紙。
*
* 輸入一些 JavaScript,然后可點擊右鍵或從“執(zhí)行”菜單中選擇:
* 1. 運行 對選中的文本求值(eval) (Ctrl+R);
* 2. 查看 對返回值使用對象查看器 (Ctrl+I);
* 3. 顯示 在選中內(nèi)容后面以注釋的形式插入返回的結(jié)果。 (Ctrl+L)
*/
Object.getOwnPropertyDescriptor
var person = [];
Object.defineProperty(person,'name',{
writable:false,
enumerable:true,
configurable:false,
value:'Bob'
});
person.name;
/*
Bob
*/
person.name=1;
/*
1
*/
person.name;//因為writable 為false;這里是不可寫的
/*
Bob
*/
delete person.name;//這的的configurable為Ffalse 無法刪除
/*
false
*/
Object.defineProperty(person,'type',{
configurable:true,
writable:true,
enumerable:false,
value:"Object"
});
Object.keys(person);//獲取對象上的鍵 Object.keys;
/*
name
*/
Object.defineProperties(person,{
title:{value:'world',enumerable:true},
corp:{value:'BBBB',enumerable:true},
salary:{value:5000,enumerable:true,writable:true}
});
Object.getOwnPropertyDescriptor(person,'salary');
/*
[object Object]
*/
Object.keys(person);
/*
name,title,corp,salary
*/
Object.defineProperties(person, {
title : {value : 'fe', enumerable : true},
corp : {value : 'BABA', enumerable : true},
salary : {value : 50000, enumerable : true, writable : true},
luck : {
get : function() {
return Math.random() > 0.5 ? 'good' : 'bad';
}
},
promote : {
set : function (level) {
this.salary *= 1 + level * 0.1;
}
}
});
person.salary;
//對象標簽 proto class extensible
var toString = Object.prototype.toString;
toString.call(null);
/*
//[object Null]
*/
function getType(o){return toString.call(o).slice(8,-1);};
getType(null);
/*
Null
*/
getType(undefined);
/*
Undefined
*/
getType(1);
/*
Number
*/
getType(new Number(1));//這里是對象
/*
Number
*/
typeof new Number(1);
/*
object
*/
getType(true);
/*
Boolean
*/
getType(new Boolean(true));//這里依然是對象
/*
Boolean
*/
//extensible標簽
var obj = {x:1,y:2};
Object.isExtensible(obj);//默認是可以擴展的
/*
true
*/
Object.preventExtensions(obj);//阻止擴展
/*
[object Object]
*/
Object.isExtensible(obj);//這里顯示不可以擴展
/*
false
*/
obj.z = 1;
obj.z
/*
undefined add new property failed
*/
Object.getOwnPropertyDescriptor(obj,'x');//查看 x的屬性 value:1,writable:true,enumerable:true,configable:true
/*
[object Object]
*/
Object.seal(obj);
Object.getOwnPropertyDescriptor(obj,'x');//將 x的configurable設(shè)置為false
Object.isSeal(obj);
Object.freeze(obj);
Object.getOwnPropertyDescriptor(obj,'x');//將x的 writable 和configurable都設(shè)置為false
Object.isFrozen(obj);
//序列化、其他對象方法
var obj = {x:1,y:true,z:[1,2,3],nullVal:null};
JSON.stringify(obj);//將對象轉(zhuǎn)換為JSON字符串
/*
{"x":1,"y":true,"z":[1,2,3],"nullVal":null}
*/
obj = {val:undefined,a:NaN,b:Infinity,c:new Date()};
JSON.stringify(obj);
/*
{"a":null,"b":null,"c":"2017-03-22T07:38:52.318Z"}//默認會忽略到 值為undefined的;NaN/Infinity 都為null,時間會轉(zhuǎn)換為 當前的時格式
*/
obj = JSON.parse('{"x":1}');//將json字符串轉(zhuǎn)換為 對象
//序列化 自定義
var obj ={
x:1,
y:2,
z:{
z1:1,
z2:2,
toJSON:function(){
return this.z1 + this.z2;
}
}
};
JSON.stringify(obj);
/*
{"x":1,"y":2,"z":3}
*/
var obj = {x:1,y:2};
obj.toString();
obj.toString = function(){return this.x + this.y};
"Result" +obj;
/*
Result3 +obj;//轉(zhuǎn)化為 數(shù)字一元加號 數(shù)字類型
*/
obj.valueOf = function(){return this.x + this.y +100;};
//+obj;
"Result" + obj;
/*
Result103
Js Object一部分操作
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- (1) propTypes庫 (官網(wǎng))http://www.css88.com/react/docs/typech...
- Interacting with Objective-C APIs(與OC-API的交互)### Initiali...
- configurable:默認為true,設(shè)置為false之后,不可刪除屬性,不能對屬性的其他特性做修改 enum...