当前位置: 首页 > news >正文

一个网站做三个关键词免费十大软件大全下载安装

一个网站做三个关键词,免费十大软件大全下载安装,最火爆的视频制作app,仙居网站设计属性描述符 假设有一个对象obj var obj {a:1 }观察这个对象,我们如何来描述属性a: 值为1可以重写可以遍历 我们可以通过Object.getOwnPropertyDescriptor得到它的属性描述符 var desc Object.getOwnPropertyDescriptor(obj, a); console.log(desc);我…

属性描述符

假设有一个对象obj

var obj = {a:1
}

观察这个对象,我们如何来描述属性a

  • 值为1
  • 可以重写
  • 可以遍历
  • 我们可以通过Object.getOwnPropertyDescriptor得到它的属性描述符
var desc = Object.getOwnPropertyDescriptor(obj, 'a');
console.log(desc);

我们会得到一个对象
观察这个对象中的内容

  • configurable : true:表示描述符本身能否修改
  • enumerable : true :是否可遍历
  • value : 1 :值
  • writable : true :是否可重写
    在这里插入图片描述
  • 设置属性描述符
Object.defineProperty(obj, 'a', {value:10,writable:false //表示不可重写
});
console.log(obj.a); // 10
  • :如果修改了configurable的值为false,后续再次修改属性描述符会报错。
Object.defineProperty(obj, 'a', {configurable:false
});
Object.defineProperty(obj, 'a', {value:20,
});
console.log(obj.a);

在这里插入图片描述

  • 但是,如果属性设置了不可重写,后续进行修改,虽然不会报错,但是不会修改成功
Object.defineProperty(obj, 'a', {value:10,writable:false //表示不可重写
});
console.log(obj.a); // 10
obj.a = 20;
console.log(obj.a); // 10

因此,如果属性不能重写,后续修改最好能进行报错,告诉用户哪句话出现了问题。

  • 为了解决上面的问题,Object.defineProperty中有两个函数
    • 读取器 getter
    • 设置器 setter

当读取属性a的值的时候会运行get函数,设置属性a的值的时候会 运行set函数

Object.defineProperty(obj, 'a', {get:function(){console.log("get函数");},set:function(val){console.log("set函数");}
});
obj.a = 20;  // set函数
console.log(obj.a);  // get函数

:这里需要注意一个问题—无限递归问题

  • 如果在get中读取属性,或者在set中设置属性的值,则会出现无限递归问题
Object.defineProperty(obj, 'a', {get:function(){return obj.a;},set:function(val){obj.a = val;}
});
obj.a = 20;
console.log(obj.a);

在这里插入图片描述

  • 使用样例
var internalValue = obj.a;
Object.defineProperty(obj, 'a', {get:function(){console.log("get函数");return internalValue;},set:function(val){console.log("set函数");internalValue = val;return internalValue;}
});
obj.a = 20; // set函数
console.log(obj.a); // get函数 20
  • 因此,假设该属性不能重写,可以在set函数中抛出一个报错信息,提示用户
Object.defineProperty(obj, 'a', {get:function(){console.log('get函数');},set:function(val){throw new Error(`报错信息:该属性不能赋值,你正在给这个属性赋值为${val}`);}
})
console.log(obj.a);
obj.a = 20;

在这里插入图片描述

当然,这里面也会出现问题需要考虑,具体出现的问题具体分析。

http://www.hrbkazy.com/news/56200.html

相关文章:

  • 中国最大的建材网站项目营销推广方案
  • 装修网站建设公司东莞企业网站模板建站
  • 知名高端网站建设公司百度官方客服电话
  • 时时彩网站建设公司全媒体广告代理
  • 主色调为绿色的网站网络推广策划书
  • 哪里可以下企业网站模板百度集团官网
  • 重庆专业网站推广费用百度推广优化排名怎么收费
  • 乡镇网站建设手机怎么建自己的网站
  • 做网站有什么用网络科技公司经营范围
  • 网站备份文件seo培训学校
  • 在线搜索资源厦门seo蜘蛛屯
  • 创建全国文明城市的宗旨是广州seo顾问seocnm
  • 有个专门做gif的网站中国互联网协会
  • 网站建设平台加盟网站制作的基本流程
  • 网站开发最好的语言电商网站定制开发
  • 济南 域名注册 网站建设领硕网站seo优化
  • 闵行区个人网页设计用户体验广东seo网站推广代运营
  • 网站做关键词排行一个月多少钱百度手机助手app
  • 有哪些做婚礼电子请柬的网站网络推广公司怎么找客户
  • 网站引导动画怎么做的什么叫做优化
  • 做装修公司的网站营业推广经典案例
  • 自己怎么做商城网站吗百度收录入口提交
  • 抖音代运营陪跑优化大师 win10下载
  • 苏州城乡建设网站百度推广查询
  • 手机钓鱼网站制作帮人推广的平台
  • 优秀的电商设计网站站长工具永久
  • 杭州做营销型网站关键词seo教程
  • 做网站的工作记录信息流广告投放公司
  • idea 做网站登录百度排名点击器
  • 昆明电商网站开发江门关键词排名优化