Javascript 高级编程-对象属性

创建对象

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  
你的欣赏是我最大的动力

Yanxiong Huang

My name is Yanxiong Huang. graduated from Nanyang middle school.Love Linux,familiar with Node.js,Docker,Serverless... and more Web technology.Contact Me:QQ 31356617;Email:huangaynxiong2013@gmail.com

guangzhou,china http://www.myfreax.com

乐在分享