首页 技术 正文
技术 2022年11月6日
0 收藏 968 点赞 644 浏览 2148 个字

1、object.defineProperty

给一个对象定义一个新的属性或者在修改一个对象现有的属性,并返回这个对象语法:
  Object.defineProperty(参数1,参数2,参数3)
  参数1:目标对象  参数2:要修改或者添加的属性名称  参数3:目标对象属性的一些特征 (是一个对象)
      
      参数1:
        value:属性值
      参数2:
        writable:对象属性值是否可以被修改 true允许 false不允许
      参数3:
        configurable:对象属性是否可以被删除 true允许 false不允许
      参数4:
        enumerable:对象属性是否可被枚举
      参数5:
        get():给一个属性提供getter方法,当访问这个对象的属性值得时候触发该方法
      参数6:
        set():给一个属性提供setter方法,当设置属性值得时候触发该方法
    

2、value

var obj = {};
Object.defineProperty(obj,"name",{
value:"张三"
})Object.defineProperty(obj,"age",{
value:"28"
})console.log(obj)
【vue】—Object.defineProperty基本使用—【巷子】

3、writable

var obj = {};
Object.defineProperty(obj,"name",{
value:"张三",
writable:false//当设置为false的时候当前对象的属性值不允许被修改
})obj.name="李四"
console.log(obj.name)//张三var obj = {};
Object.defineProperty(obj,"name",{
value:"张三",
writable:true//当设置为true的时候当前对象的属性值允许被修改
})obj.name="李四"
console.log(obj.name)//李四
【vue】—Object.defineProperty基本使用—【巷子】

4、configurable

var obj = {};
Object.defineProperty(obj,"name",{
value:"张三",
configurable:false//当设置为false的时候对象的属性不允许被删除
})delete obj.name;console.log(obj.name)//张三var obj = {};
Object.defineProperty(obj,"name",{
value:"张三",
configurable:true//当设置为true的时候对象的属性允许被删除
})delete obj.name;console.log(obj.name)//undefined【vue】—Object.defineProperty基本使用—【巷子】

5、enumerable

var obj = {name:"张三",age:"李四"}Object.defineProperty(obj,"name",{
enumerable:false//当设置为false的时候对象的属性不可被枚举
})Object.defineProperty(obj,"age",{
enumerable:false
})console.log(Object.keys(obj))//[]var obj = {name:"张三",age:"李四"}Object.defineProperty(obj,"name",{
enumerable:true//当设置为true的时候对象的属性可被枚举
})Object.defineProperty(obj,"age",{
enumerable:true
})console.log(Object.keys(obj))//["name",age]
【vue】—Object.defineProperty基本使用—【巷子】

6、for in && Object.keys()的区别

//for in 与Object.keys()的区别
function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype = {
sex:"男"
}var man = new Person("张三",18);console.log(Object.keys(man));//["name","age"]for(var key in man){
console.log(key);//name age sex
}总结:
  Object.keys():返回一个数组,数组值为对象自有的属性,不会包括继承原型的属性
  
  for in :遍历对象可枚举属性,包括自身属性,以及继承自原型的属性

【vue】—Object.defineProperty基本使用—【巷子】

7、get() && set()

var obj = {name:"张三"}Object.defineProperty(obj,"name",{
get(){
console.log("被访问了")//当被访问的时候会触发get()方法 },
set(newVal){
console.log("被设置了"+newVal)//当被设置的时候会触发set()方法
}
})
obj.name//输出:被访问了
obj.name="李四";//输出:被设置了李四
【vue】—Object.defineProperty基本使用—【巷子】

注意:当使用了get()方法或者set()方法的时候就不能使用value和writable中的任何一个属性否则会报错

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,493
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,133
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,297