js--11对象的创建方式

<html>

<head>
    <title>Object</title>
</head>
<body>

<script type="text/javascript">
//6大基本类型:undefined,null, string,boolean,number,对象类型(js内置的对象如Number、数组,宿主环境如浏览器中的window对象document对象,自己创建的)
//自己创建的对象,第一种,var形式创建对象:
var  p = {
    name:"cj",//属性的名字是name,对象中属性的名字可以不加引号,逗号分割,
    work:function () { //方法
        console.log("working...");
    },
    _age:18,  //下划线表示私有
    get age(){//不是方法的定义,没有冒号
        return this._age;
    },
    set age(val){//形参没有类型
        if(val <0 || val >150){
            throw new Error("invalid value");
        }else{
            this._age = val;
        }
    },
    address:{
        home:"jiating",
        office:"office"

    }

};
console.log(p.name);
console.log(p._age);
console.log(p['age']);//属性可以用点访问,也可以用中括号访问
console.log(p.address.home);
var r = p && p.address && p.address.home  //前面p和p.address都不为空才执行最后面
console.log(r);//jiating

//get,set writable ,enuerable,configurable,value
//第二种,通过object函数创建对象,
var o = new Object();
o.name = 'ss';
o["abc"] = "abc";


//第三种:defineProperties,definePropertie

Object.defineProperties(p,{//给p对象加属性
    salary:{
        value:1000,
        writable:false
    },
    gender:{
        value:true
    },
    height:{
        get:function(){
            return 180
        },
        set:function(val){
            console.log(val);
        }
    }
});
console.log(p.salary);//1000
console.log(p.gender);//true
console.log(p.height);//180
p.height = 324;
</script>
</body>


</html>

 

for(sx in p){//遍历对象的所有属性
    console(sx);
    console(p.sx);
}

console("name" in p);//name属性是否在p中,true
console(p.hasOwnProperty("name"));//p是否有name属性
delete p.name;//删除p的name属性,有些属性是删除不了的,如tostring()

//writeable:属性是否可写
//enuerable:属性在遍历的时候是否出现
//configurable:属性是否可以删除,是否可以改变他的可写等特性
Object.getOwnPropertyDescriptor(p,"address");//得到p对象的address属性的特性

 

posted @ 2017-05-12 00:00  无天666  阅读(299)  评论(0)    收藏  举报