创建对象

var Person = {
    name:'freax',
    age:'18',
    say: function () {
        console.info(this.name);
    }
};

读取属性

var name = Person.name; //freax

设置属性

 Person.name = 'huangyanxiong';

属性访问错误

undefined

 var height = Person.height;  
//尝试访问一个对象不存在的属性,javascript并不会报错,而是返回undefined

抛出异常

var sex = Person.lastName.length;  //尝试访问一个不存的对象会抛出异常

在我们无法保证Person和Person.lastName都是对象的时,为了保证上面的表达式不抛出异常,可以使用以下表达式

var length = Person && Person.lastName && Person.lastName.length; 
//利用&&短路行为,也就是前面两个表达式为真时执行第三个

为null和undefined设置属性也会报类型错误

null.name = 'freax';  //抛出类型错误
undefined.name = 'huangyanxiong';//同上

如果给一个只读的属性设置值,按照我们正常逻辑只读也就不可写,而设置是写的行为,估计会报错,可是在javascript并不会这样,他javascript并不会报错,也不会抛出异常

尝试给构造函数原型设置值

Object.prototype = 'Give you a surprise';
console.info(Object.prototype); //没有任何变化

delete 删除属性

delete Person.name;
delete Person['age'];

注意delete 只能删除自有的属性,不能删除继承属性,delete什么都可以删除,他都会返回true

var o = {x:1,y:2};
delete o.x; //true
delete o.x; //true
delete o.toString;//true
delete 1;//true