zoukankan      html  css  js  c++  java
  • 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属性的特性
  • 相关阅读:
    写给理工科人看的乐理(一)声学基础
    魔方最少记忆还原法
    甲乙两人互猜数字(鬼谷子问题)的逻辑推理与算法建模
    模板元编程实现素数判定
    UVa OJ 194
    UVa OJ 175
    UVa OJ 197
    UVa OJ 180
    UVa OJ 140
    判断input或者div.span等标签是否存在
  • 原文地址:https://www.cnblogs.com/yaowen/p/6843531.html
Copyright © 2011-2022 走看看