JS 之 理解对象

今天翻了翻红宝书中关于对象的一章,我屮艸芔茻!!!!!!!

首先来一个创建自定义对象的基本方法:

var person = new Object();
person.name="rabbit";
person.age=18;
person.sex="female";
person.sayName=function(){
    alert(this.name);
}

字面量创建对象:

var person={
    name:"rabbit",
    age:18,
    sex:"female"
}

先说一下对象中的属性类型:

1、数据属性(即一般用来存放数据的属性)

该属性有四个特性:[[Configurable]] 是否可配置   [[Enumerable]]  是否可枚举   [[Writable]]   是否可写(修改)  [[Value]]  存放属性值

[[Configurable]] :能否通过delete删除属性,能否修改属性的特性,能否修改属性为访问器属性。

[[Enumerable]]  :能否可枚举。 [[Writable]]  :能否修改属性值。直接在对象上定义的属性,其上面三个特性默认值都为true。

2、访问器属性(这类属性一般不会用来存放值,包含一对getter和setter函数)

访问该属性时自动调用getter函数,给该属性赋值时,自动调用setter函数。

该属性也有四个特性:前两个和数据属性相同,后两个是 [[Get]] 和 [[Set]] ,在读取和写入时调用的函数。

该属性的常见用法是,设置一个属性会导致其他属性的改变。

当只有set函数,没有get函数时,说明该访问器属性只可写,不可读。

当只有get函数,没有set函数时,说明该访问器属性只可读,不可写。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Object.defineProperty( obj,prop,desc )  对象 属性 描述符对象

该方法用来定义一些属性,或者更改某些属性的特性。

var person={};
//给person对象添加一个name属性,值为"rabbit"
Object.defineProperty(person,"name",{
    //writable:true,                这里设置为true即可修改该属性
    value:"rabbit"
})
console.log(person.name);            //输出rabbit
//默认使用这种方法添加的属性,前三个特性都是false
person.name="BIG";
console.log(person.name);            //输出rabbit,因为[[Writable]]特性为false,不可修改

[[Configurable]]:该属性一旦设置为false,就不能设置为true,除了 [[Writable]] 特性外其他特性都不能再修改。

Object.defineProperties(obj,{}):定义多个属性

Object.defineProperties(book,{
    name:{
        value:"Book"
    },
    price:{
        writable:true,
        value:1000
    }
})

Object.getOwnPropertyDescriptor(obj,"prop") , 读取属性的特性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值