Object的属性

查看官网:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object

第一段代码:
var person={};
Object.defineProperty(person,'name',{
configurable:true,//能否使用delete、能否修改属性特性、或能否修改访问器属性、,false为不可重新定义,默认值为true
enumerable:false,//对象属性是否可通过for-in循环,flase为不可循环,默认值为true
//writable:true,//对象属性是否可修改,flase为不可修改,默认值为true
//value:'huang', //对象属性的默认值,默认值为undefined
set:function(newValue){
this.name=newValue;
},
get:function(){
return this.name;
}
}); 当get,set出现的时候不能出现value和writable,
否则报错:Uncaught TypeError: Invalid property descriptor. Cannot both specify accessors and a value or writable attribute, #<Object>
at Function.defineProperty (<anonymous>)
at <anonymous>:: 第二段代码:
var waterfall={};
Object.defineProperty(waterfall,'name',{
configurable:true,//能否使用delete、能否修改属性特性、或能否修改访问器属性、,false为不可重新定义,默认值为true
enumerable:false,//对象属性是否可通过for-in循环,flase为不可循环,默认值为true
//writable:true,//对象属性是否可修改,flase为不可修改,默认值为true
//value:'huang', //对象属性的默认值,默认值为undefined
set:function(newValue){
this.name=newValue;
},
get:function(){
return "Namess"+this.name;
}
});
问题:这段代码会报错,因为在set和get函数里出现了this.name= 和 return 里有this.name
导致一直循环递归无法停止,才报错的。
类似于:
function a() {
a();
}
调用a,会无限循环。 解决办法是:
var waterfall={};
Object.defineProperty(waterfall,'name',{
configurable:true,//能否使用delete、能否修改属性特性、或能否修改访问器属性、,false为不可重新定义,默认值为true
enumerable:false,//对象属性是否可通过for-in循环,flase为不可循环,默认值为true
//writable:true,//对象属性是否可修改,flase为不可修改,默认值为true
//value:'huang', //对象属性的默认值,默认值为undefined
set:(newValue)=>{
this.name=newValue;
},
get:()=>{
return "Namess"+this.name;
}
}); Object.defineProperties(object, props)
参数
object: 定义的对象
props: 添加的属性, key和 value 分别Object.defineProperty 中的第二和第三个参数。
例子: let waterfall={};
Object.defineProperties(waterfall,{
name:{
configurable:true,
enumerable:true,
set:(val)=>{
this.name=val
},
get:()=>{
return this.name
}
},
age:{
configurable:true,
enumerable:true,
set:(val)=>{
this.age=val
},
get:()=>{
return this.age
}
}
}) Object的6个属性:
configurable,enumerable,writable,value,set,get。 Object.observe已经被废弃。
Object.keys(waterfall) //[ 'name', 'age' ]

javascript的Object对象的defineProperty和defineProperties的更多相关文章

  1. javascript ES5 Object对象

    原文:http://javascript.ruanyifeng.com/stdlib/object.html 目录 概述 Object对象的方法 Object() Object.keys(),Obje ...

  2. JavaScript之Object对象常用属性与方法手册

    MDN Object参考地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Obje ...

  3. javascript 遍历object对象

    (function(){ var str = ''; for(var i in obj){ //遍历object str += '\n'+(i+' : '+obj[i]); // i+' : '+ob ...

  4. JavaScript笔记 - Object对象特性的应用

    可以依据js对象中key是永远不会重复的原则,来模拟Map类型以及去除数组重复项. 1.模拟Map类型 (1)构造Map对象 function Map(){ //private var obj = { ...

  5. JavaScript:对Object对象的一些常用操作总结

    JavaScript对Object对象的一些常用操作总结. 一.Object.assign() 1.可以用作对象的复制 var obj = { a: 1 }; var copy = Object.as ...

  6. JavaScript Object对象

    目录 1. 介绍:阐述 Object 对象. 2. 构造函数:介绍 Object 对象的构造函数. 3. 实例属性:介绍 Object 对象的实例属性:prototype.constructor等等. ...

  7. 详解JavaScript中的Object对象

    Object是在javascript中一个被我们经常使用的类型,而且JS中的所有对象都是继承自Object对象的.虽说我们平时只是简单地使用了Object对象来存储数据,并没有使用到太多其他功能,但是 ...

  8. js中的Object.defineProperty()和defineProperties()详解

    ECMAS-262第5版在定义只有内部采用的特性时,提供了描述了属性特征的几种属性.ECMAScript对象中目前存在的属性描述符主要有两种,数据描述符(数据属性)和存取描述符(访问器属性),数据描述 ...

  9. Javascript中的Object对象

    Object是在javascript中一个被我们经常使用的类型,而且JS中的所有对象都是继承自Object对象的.虽说我们平时只是简单地使用了Object对象来存储数据,并没有使用到太多其他功能,但是 ...

随机推荐

  1. [原]linux下将网卡设置为混杂模式

    设置为混杂模式ifconfig eth2 promisc取消设置ifconfig eth2 -promisc ------------------------------------------ 下面 ...

  2. apache两种工作模式详解

    prefork模式 这个多路处理模块(MPM)实现了一个非线程型的.预派生的web服务器,它的工作方式类似于Apache 1.3.它适合于没有线程安全库,需要避免线程兼容性问题的系统.它是要求将每个请 ...

  3. 惠普hp服务器通过iLO接口远程安装操作系统

    我们以hp proliant sl210t的机器为例,我们在配置好iLO接口的远程管理后,我们便可以通过iLO进行操作系统的安装 关于惠普服务器的iLO配置,可参笔者的另一篇文章<关于hp pr ...

  4. javaagent

    -javaagent:<jarpath>[=<options>]load Java programming language agent, see java.lang.inst ...

  5. iOS ViewControllers 瘦身

    https://objccn.io/issue-1-1/ https://juejin.im/user/57ddfba4128fe10064cbb93a 把 Data Source 和其他 Proto ...

  6. empty对如下8种情况返回true

    1.strrchr函数 在W3School站点上的注释如下: strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符.如果成失败,否则返回 fals ...

  7. Saltstack实战之无master和多master

    如果不想依赖master可以设置为无master vim /etc/salt/minion 就可以通过minion来安装一个salt-master了(下来查资料做,关闭salt-minion进程因为不 ...

  8. Freemarker 基本数据类型

    一 数据类型简介 freemarker 模板中的数据类型由如下几种: 1. 布尔型:等价于java中的boolean类型, 不同的是不能直接输出,可以转换成字符串再输出 2. 日期型:等价于java中 ...

  9. 线段树(Segment Tree)总结

    0 写在前面 怎么说呢,其实从入坑线段树一来,经历过两个阶段,第一个阶段是初学阶段,那个时候看网上的一些教学博文和模板入门了线段树, 然后挑选了一个线段树模板作为自己的模板,经过了一点自己的修改,然后 ...

  10. CSU 1803 - 2016 - [同余]

    题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1803 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1. ...