JavaScript---対象

6186 ワード

JSはキーの値を文字列に変更します.属性は無秩序です.例えば、
var obj = {};
obj[1]=1;
//obj['1']=1;

var obj={};
obj[{x:1}] = 1;
//obj[{}] = 1;
属性プロトタイプチェーンdeleteはプロトタイプチェーンに影響しません.
function foo() {
}
foo.prototype.z=3;
obj = new foo();
obj.x=1;//    
//obj.z = 3;//  
obj.hasOwnProperty('z');//false
obj.z=5;
//foo.prototype.z=3;
obj.hasOwnProperty('z');//true
属性の読み書き
var obj={x:1};
obj.x;//1
obj['x'];//1
obj.y;//undefined
obj.y.z = 2;//error--undefined       
obj.y=3;//  
属性を削除
delete Object.prototype;//false
delete p['x'];
delete p.x;
var定義の変数はdeleteにも削除できません.
属性検出
var cat = new Object;
cat.legs=4;
'legs' in cat;//true

Object.defineProperty(cat,'price',{
enumerable:false,value:10000});//  false
cat.propertyIsEnumerable('price');//false
cat.hasOwnProperty('price');//true


if(cat.legs !== undefined)
if(cat.legs != undefined)// !==undefined,or,!==null
if(cat && cat.legs)// !==undefined,or,!==null

セッター
var man = {
age=null;
get age() {}
set age(){}
}
man.age = 100;//  set
プロトタイプチェーン上の属性の値を変更します.
//obj  x
Object.defineProperty(obj,x',{writable:true,configurable:true,value:100});
obj.x;//100
obj.x=500;//500
属性ラベル:
//    
Object.getOwnPropertyDescriptor({pro:true},'pro');
//value,writable,enumerable,configurable  true
//        
var Person = {};
Object.defineProperty(person,'name',{
  configurable:false,
  writable:true,
  enumerable:true,
  value:"lxf"
});
//      , defineProperties,    ,  
プロトタイプ:プロトタイプチェーンを実現
class:標識タイプObject.prototype.toString;call()は、例えば、1はNumber–>を返してオブジェクトに変換します.
extenssible:拡張できるかどうか、デフォルトtrue Object.prevent Extensions(obj);
configrable:Object.seal(obj)//configrableをビットfalseに設定して判断する:isSealed
Object.freeze(obj):すべてのラベルがfalseです.
序文化
JSON.stringfy(obj);//undefined     ,NaN,Infinity    null
var obj JSON.parse('{"x":1}');//    
       :
var obj = {
x:1,
y:2,
o:{
o1:1,
o2:2.
toJSON:finction() {
    return this.o1+this.o2;
}
}
};
JSON.stringfy(obj);
//{"x":1,"y":2,"o":3}