JavaScript基础之对象

在真正的工作中感受到了javascript的强大,所以准备自学javascript。基础的什么数据类型、表达式、语句等就不写出来了,想必大家对那个都很熟悉了。现在就开始介绍javascript对象吧。

“对象是javascript中基本数据类型”这个是《javascript权威指南》中给出的定义。在我看来对象和我们平时所说的字典非常相似,但是这个“字典”是可以继承的。Javascript中的对象时动态的——可以新增属性也可以删除属性。这个和java或者c++的对象有很大区别,当然java中也可能修改对象属性除非你用特殊的方法。属性包括名字和值,属性名可以是任意的字符串,但是同一个对象中不允许有相同的属性名,属性值可以是任意的javascript值。在进行属性设定的时候我们可以根据需要把一些属性设定为可写、可枚举、可配置等。

属性特性:

可写(writable):表明对象是否可以设置;

可枚举(enumerable):表明是否可以根据for/in进行访问;

可配置(configurable):表明能否修改该属性;

这些特性之间有相互的依赖关系例如:可配置==false那么可写==true也是不能进行设置该属性的。

对象特性:

对象的原型(prototype)指向另一个对象,本对象的属性继承它的原型;

对象的类(Class)是标示对象的标志;

对象的扩展标志(extensiable flag)指明是否可以为该对象添加新属性;

创建对象:

对象直接创建:

var empty={};var point={x:1,y:2}; var book={title:"Javascript",auther:{fistname:"David",subname:"Flangan"}};

通过new进行创建:

var obj=new Object(); var arr=new Array(); var date= new Date();

Object.create:

在介绍之前先介绍一下原型,其实最初的原型是Object.prototype大部分的对象都会继承这个原型。当然对于Array 的对象他们继承Array.prototype和Object.prototype,这一系列的连接就是原型链。object.create()的方法创建一个新对象,其中第一个参数就是对象的原型,第二个可选参数是对属性一些的设置。var obj=Object.create({x:1,y:2});//obj继承了x、y属性

对象属性的操作:

属性的查询:

可以通过(.)或者([ ])运算符获取属性的值。var author= book.author;//得到book的author属性 var name=book["name"];// 获取book的name属性。如果对象自身上没有要查询的属性,就在原型链上进行查询,如果原型链上也没有就返回undefined。

属性的赋值:

假设要给一个对象的属性x赋值,如果x在对象中存在(不在原型链上),那么这个赋值只是修改属性的值。如果对象中不存在这个属性,并且这个对象是可以扩展的就给这个对象添加一个新属性。如果要赋值的属性在原型链上,那么就创建一个同名属性覆盖原型链上的。注意:属性的赋值首先检查原型链,判断是不是允许赋值。

删除属性:

delete运算符可以删除对象的属性,但仅仅是断开属性和对象的连接,不会操作属性中的属性。delete只能删除自有属性不能删除原型链上的。var  o={x:1};delete o.x;//删除对象o的x属性。

检测属性:

in检测对象自有和继承的原型链上是否包含眼检测属性,var o={x:1}; x in o;//true y in o;//false

hasOwnProperty用来检测属性是不是自有属性。

propertyIsEnumerable检测属性是不是自有属性并且是不是枚举的。

isPrototypeOf:检测对象之间的关系,p.isPrototypeOf(o);//检测o是不是继承p

属性setter和getter:

存取器属性,如果一个属性有setter和getter中的一个就不能像一般属性进行赋值操作。存取器属性不具有可写性,只有getter那么只读,setter那么只写。如果对象o的原型链上有属性x的setter或getter方法,那么就不能给哦添加x属性。只能通过Object.defineProperty(o,"x",{value:0,writable:true,enumerable:true,configurable:true});

序列化对象:

指将对象的状态转化为字符串,也可以将字符串还原为对象。JSON.stringify()转换为字符串,JSON.parse()还原为对象。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值