js从入门到放弃之高阶js第一天

JS高阶—day-01

1、理解Object 创建对象

1、通过字面量创建:

var obj={
    name:"小明"age:18
}

2、通过Object构造函数创建:

var obj2=new Object();
obj2.name="小红";
obj2.age=19;

3、通过自定义构造函数创建:

function Parson(name,age,gender){
    this.name=name;
    this.age=age;
    this.gender=gender;
};
var obj3=new Parson("小兰",20,"女");//调用自定义构造函数

Object父类下面的方法(第一天主要讲6个)

简述:

1、Object.keys();

2、Object.getOwnPropertyNames();

3、Object.defineProperty();

4、Object.difineProperties();

5、Object.getOwnPropertyDescriptor();

6、Object.getOwnpropertyDeescriptors();

补充(在对象中默认情况下我们添加的对象的自身属性都是可枚举的,我们可以使用for in 循环遍历它们)

1、Object.keys();

该方法会返回一个给定对象的自身可枚举的属性名 形成的数组

var arr=Object.keys(obj);

参数:给定一个已经纯在的对象

返回值:一个给定的对象的自身可枚举的属性名组成的数组

2、Object.getOwnPropertyNames();

该方法返回一个指定对象的所有自身属性的属性名(包括不可枚举属性)组成的数组

var arr2=Object.getOwnPropertyNames(obj2);

参数:一个给定已经存在的对象

返回值:返回一个由给定对象的属性名组成的数组(包括不可枚举属性)

3、Object.defineProperty();

该方法是定义一个给定对象的属性的操作定义

该方法有三个参数

Object.defineProperty(obj,"name",{
    configurable:false;//该属性是设置当前属性是否可被删除, **默认为** **false**
    enumerable:false///该属性是否可被枚举, **默认为** **false**
    writable:true;//是否可被修改, **默认为** **false**
    value:"小青"//直接设置当前值**默认为 undefined**。
})

4、Object.definProperties()

该方法是不是只比方法3多了个s,没错,它就是用来同时设置对象的多个属性

参数:该方法只有两个参数

var obj4={
    age:18;
    name:"小白";
};
Object.defineProperties(obj4,{
    name:{
        configurable:true;
        enumerable:true;
        writable:false;
    },
    name:{
        configurable:false;
        enumerable:false;
        writable:true;
    }
    //当然也可以直接设置新的属性
    gender:{
        configurable:false;
        enumerable:true;
        writable:false;
        value:"女";
    }
    
})

5、Object.getOwnPropertyDescriptor();

该方法是用来返回指定对象的属性的描述符

参数:两个一个是指定的对象,另一个是要获取的属性信息

console.log(Object.getOwnPropertyDescriptor(obj4,"name"));

6、Object.getOwnPropertyDescriptors();

参数:obj 只有一个

返回值:返回指定对象的自身属性的特征描述,没有属性则返回空对象

console.log(Object.getOwnPropertyDescriptors(obj4));

补充知识点:

delete关键字用来删除对象的属性

可以使用in来判断属性是否在对象中。(in的含义就是…中)
属性特征可分为两种:一种是数据属性、另一种是访问器属性(set get 访问器 属性
var obj5={
    name:"小花",
    get getName(){//get属性不能有参数
        console.log("用户要求访问")return this.name;
    },
    set setName(value(){//set属性必须设定参数
    console.log("用户要求修改信息");
    this.name=value;
    })
}

当然也可以进阶来做一些类似于权限判断的东西:

var obj6={
    name:"小花",
    age:18,
    get getName(){//get属性不能有参数
        if(this.age>=18){
            console.log("用户要求访问")return this.name;
        }else{
            return "您当前权限不足";
        }
    },
    set setName(value(){//set属性必须设定参数
        if(this.age>=18){
            console.log("用户要求修改信息");
    		this.name=value;
        }else{
            alert("您点当前权限不足");
        }
    })
}

obj5.setName="小黑";
obj5.getName;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值