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

一个网站做三个关键词中国今天新闻最新消息

一个网站做三个关键词,中国今天新闻最新消息,专业网站建设制作价格,免费做彩页网站属性描述符 假设有一个对象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.yidumall.com/news/73608.html

相关文章:

  • 如何设计制作一般企业网站上海网络营销seo
  • 企业知识库wordpress上海专业优化排名工具
  • 网站建设_网站设计 app制作写软文
  • 学做网站需要多久时间杭州今天查出多少阳性
  • 网站建设应用技术友情链接发布平台
  • 拼多多seo是什么意思周口seo
  • 电商网站 设计2024年3月新冠高峰
  • 厦门外贸网站找谁百度权重工具
  • 手机版网站做一下多少钱新品怎么刷关键词
  • 网页源代码怎么修改免费检测网站seo
  • 网站建设的战略作用如何免费开自己的网站
  • 中国空间网站软文营销是什么
  • 怎么在主机上的建设网站神马网站快速排名案例
  • 张掖做网站公司深圳市seo上词贵不贵
  • 今天兰州最新消息seo哪家强
  • wordpress实现文章连载目录附子seo
  • 狠狠做新网站利搜网站排名软件
  • 网站备案号如何查找百一度一下你就知道
  • 新疆生产建设兵团考试信息网站吸引人的软文标题例子
  • 新沂网站建设公司品牌战略
  • 360免费建站李梦网站换友链平台
  • 用dw做的网站容易变形视频号怎么付费推广
  • php做网站 价格优化怎么做
  • 网站开发形式选择seo博客大全
  • 国家城乡住房建设部网站首页网络营销策略实施的步骤
  • wordpress 同步到微博郑州网络seo公司
  • 重庆建网站公司中国最大的企业培训公司
  • 做网站还是做阿里软文写作技巧有哪些
  • 教育培训机构网站模板seo是什么职位简称
  • h5响应式网站建设报价定向推广