JavaScript基础之对象

来源:互联网 发布:台湾用淘宝嘛 编辑:程序博客网 时间:2024/05/17 09:29

在真正的工作中感受到了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()还原为对象。




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩牙地包天怎么办 小孩的牙地包天怎么办 小孩牙是地包天怎么办 布偶猫生宝宝时怎么办 仔猪拉稀打针喂药都不好怎么办 qq群宠物沉眠怎么办 单位不给开离职证明怎么办 电梯年检报告丢了怎么办 小学生养成夜训交怎么办? 遇到自私多疑的老公该怎么办 老年人吵架非说打她了装病怎么办 高三厌学家长该怎么办 考研团员档案丢了怎么办 学生的档案丢了怎么办 大四团员证丢了怎么办 2岁宝宝吸收不好怎么办 孩子逆反心理特强沟通不了怎么办 一年级孩子有逆反心里怎么办 如果一个学生会部门没人留怎么办 如果学生会部门很少人报名怎么办 职场说错话了我该怎么办? 中考通知书收到两份怎么办 高三学生英语差怎么办 论文查重百分之0怎么办 微信红包发错人了怎么办 文学社在社团活动日可以怎么办 小孩玩游戏瞎花钱怎么办 党员不配合纪检调查工作怎么办 新同事老问问题怎么办 白色衣服染红色了怎么办 左腿膝盖内侧疼怎么办 差二本线几分怎么办 吃错东西了想吐怎么办 玩游戏扣的话费怎么办 转笔实在是不会怎么办 滑板l轴承沾水了怎么办 暗影格斗3闪退怎么办 暗影格斗3文档被删怎么办 dnf手残党偷学技能学不了怎么办 打篮球没热身膝盖酸痛是怎么办 无线路由器lan口少怎么办?