<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属性的特性