资讯专栏INFORMATION COLUMN

javascript中的对象

netmou / 1038人阅读

摘要:没有原型的对象为数不多,就是其中之一。它创建一个新对象,其中第一个参数是这个对象的原型,第二个可选参数,用以对对象的属性进行进一步描述。序列化对象还原对象

一 创建对象:

对象直接量:由若干名/值对组成的映射表,名/值对中间使用冒号分离,明/值对之间用逗号分离,整个映射变使用花括号括起来。举例如下:

var book = {
    "main title": "javascript",                   // 属性名字里有空格,必须用字符串表示
    "sub-title": "The Definitive Guide",          // 属性名字里连字符,必须使用字符串便是
    "for": "all audiences",                       // "for"是保留字,因此必须用引号
    author: {                                     // 这里的属性值是一个对象
        firstName: "David",                       // 注意,这里的属性名都没有引号
        surname: "Flanagan"
    }
};

通过new创建对象:new运算符创建并初始化一个对象。关键字new后跟随一个函数调用。这里的函数称作构造函数,构造函数用以初始化一个新创建的对象。例如:

var o = new Object();     // 创建一个空对象,和{}一样
var a = new Array();      // 创建一个空数组,和[]一样

原型:每一个javascript对象都和另一个对象关联。
没有原型的对象为数不多,Object.prototype就是其中之一。

Object.create():它创建一个新对象,其中第一个参数是这个对象的原型,第二个可选参数,用以对对象的属性进行进一步描述。例如:

var o1 = Object.create({x:1, y:2});       // o1继承了属性x和y
var o2 = Object.create(null);             // o2不继承任何属性和方法

二 属性的查询和设置

可以通过点(.)或方括号([])运算符来获取属性的值。运算符左侧应当是一个表达式,它返回一个对象。对于点来说,右侧必须是一个以属性名称命名的简单标识符。对于

方括号来说,方括号内必须是一个计算结果为字符串的表达式,这个字符串就是属性的名字:

var author = book.author;          // 得到book的"author"属性
var name = author.surname;         // 得到auhor的"surname"属性
和查询属性的写法一样,通过点和方括号也可以创建属性或给属性赋值,但需要将它放在表达式的左侧:
book.edition = 6;                    // 给book创建一个名为"edition"的属性
book["main title"] = "ECMAScript";   // 给"main title"属性赋值

三 删除属性

delete运算符可以删除对象的属性。它的操作数应当是一个属性访问表达式。delete只是断开属性和宿主对象的联系,而不会去操作属性中的属性。例如:
delete book.author;                  // book不再有属性author
delete运算符只能删除自有属性,不能删除继承属性。

四 检测属性

javascript对象可以看做属性的集合。需要检测集合中成员的所属关系--判断某个属性是否存在于某个软件中。可以使用in运算符,hasOwnProperty()和propertyIsEnumerable()方法来完成。

五 枚举属性

遍历对象属性三种方法:
* 通常使用for/in循环.
* Object.keys().
* Object.getOwnPropertyNames().

六 属性getter和setter

对象由名字、值和一组特性构成的。属性值可以用一两个方法替代,这两个方法就是getter和setter。由getter和setter定义的属性称作“存储器属性”,
不同于“数据属性”,数据属性只有一个简单的值。

七 对象的三个属性

* 原型属性: 要想检测一个对象是否是另一个对象的原型,请使用isPrototypeof()方法。
* 类属性: 使用classof()函数可以返回传递给它的任意对象的类。
 function classof(o) {
    if (o === null ) return "Null";
    if (o === undefined) return "Undefined";
    return Object.prototype.toString().call(o).slice(8, -1);
}   

八 序列化对象

对象序列化是指将对象转换为字符串,也可以将字符串还原为对象。

* JSON.Stringify() 序列化对象
* JSON.parse() 还原js对象


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86305.html

相关文章

  • JavaScript深入浅出

    摘要:理解的函数基础要搞好深入浅出原型使用原型模型,虽然这经常被当作缺点提及,但是只要善于运用,其实基于原型的继承模型比传统的类继承还要强大。中文指南基本操作指南二继续熟悉的几对方法,包括,,。商业转载请联系作者获得授权,非商业转载请注明出处。 怎样使用 this 因为本人属于伪前端,因此文中只看懂了 8 成左右,希望能够给大家带来帮助....(据说是阿里的前端妹子写的) this 的值到底...

    blair 评论0 收藏0
  • JavaScript中的面向对象(object-oriented)编程

    摘要:对象在中,除了数字字符串布尔值这几个简单类型外,其他的都是对象。那么在函数对象中,这两个属性的有什么区别呢表示该函数对象的原型表示使用来执行该函数时这种函数一般成为构造函数,后面会讲解,新创建的对象的原型。这时的函数通常称为构造函数。。 本文原发于我的个人博客,经多次修改后发到sf上。本文仍在不断修改中,最新版请访问个人博客。 最近工作一直在用nodejs做开发,有了nodejs,...

    JerryZou 评论0 收藏0
  • JavaScriptCore全面解析

    摘要:可嵌入动态文本于页面,对浏览器事件作出响应,读写元素,控制等。年月,发布了一款面向普通用户的新一代的浏览器版,市场份额一举超过。网景将这门语言作为标准提交给了欧洲计算机制造协会。线程和的并发执行都是线程安全的。后面会详细讲解对象类型的转换。 本文由云+社区发表作者:殷源,专注移动客户端开发,微软Imagine Cup中国区特等奖获得者 JavaScript越来越多地出现在我们客户端开...

    OnlyMyRailgun 评论0 收藏0
  • [译] V8 使用者文档

    摘要:注意句柄栈并不是调用栈中的一部分,但句柄域却在栈中。一个依赖于构造函数和析构函数来管理下层对象的生命周期。对象模板用来配置将这个函数作为构造函数而创建的对象。 如果你已经阅读过了上手指南,那么你已经知道了如何作为一个单独的虚拟机使用 V8 ,并且熟悉了一些 V8 中的关键概念,如句柄,域 和上下文。在本文档中,还将继续深入讨论这些概念并且介绍其他一些在你的 C++ 应用中使用 V8 的...

    lei___ 评论0 收藏0
  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你的“对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    李昌杰 评论0 收藏0
  • SegmentFault 技术周刊 Vol.32 - 七夕将至,你的“对象”还好吗?

    摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...

    Lyux 评论0 收藏0

发表评论

0条评论

netmou

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<