


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、这篇文章主要介绍了JavaScript中的Object对象学习教程,是JavaScript入门学习中的基础知识,需要的朋友可以参考下参数:(1) obj必需。Object对象分配到的变量名称。 (2) 值可选。任一 JavaScript基元数据类型(数字、布尔值或字符串)。 如果值是一个对象,则返回的对象是未修改的。 如果值是null、未定义”或未提供”,则创建无内容的对象。 &n bsp;Object对象的方法Object作为构造函数使用时, 可以接受一个参数。 如果该参数是一个对象, 则直接返回 这个对象;如果是一个原始类型的值,则返回该值对应的包装对象。利用
2、这一点,可以写一个判断变量是否为对象的函数。function isObject(value) &n bsp;retur n value = Object(value);要在Object对象上面部署一个方法,有两种做法。部署在Object对象本身部署在 Ototype 对象Object.keys方法和Object.getOwnPropertyNames方法很相似,一般用来遍历对象的属性。 它们的参数都是一个对象,都返回一个数组,该数组的成员都是对象自身的(而不是继承的)所有属性名。两者区别在于,前者只返回可枚举的属性,后者还返回不可枚举的属性名。由于数组存在不可枚举属性leng
3、th,因此一般使用Object.keys遍历数组。JavaScript没有提供计算对象属性个数的方法,可通过 Object.keys(o).le ngth和 Object.getOw nPropertyNames(o).le ngth 获取。Object.observe方法用于观察对象属性的变化。原型链相关方法:Object.create():生成一个新对象,并该对象的原型。Object.getPrototypeOf():获取对象的 Prototype 对象。Object实例对象的方法Ototype.valueOf() : valueOf方法的作用是返回一个对象的值,默认情况
4、下返回 对象本身。该方法的主要用途是,JavaScript自动类型转换时会默认调用这个方法。Ototype.toString() : toString方法的作用是返回一个对象的字符串形式。当对象 用于字符串加法时,会自动调用toString方法。使用call方法,可以在任意值上调用方法,从而判断这个值的类型。不同数据类型的toString方法返回值如下:数值:返回object Number字符串:返回object String布尔值:返回object Booleanundefined :返回object Undefinednull :返回object Null对象:返回” o
5、bject “ +构造函数的名称+ “”Ototype.toStri ng.call(2) / object NumberOtotype.toStri ng.call() / object Stri ng利用这个特性,可写出一个比typeof运算符更准确的类型判断函数。var type = function (o)&n bsp;var s = Ototype.toStri ng.call(o);&n bsp;return s.match(八object (.*?)/)1.toLowerCase();type(); / objecttype(
6、); / arraytype(5); / nu mber在上面这个type函数的基础上,还可以加上专门判断某种类型数据的方法。Null, Un defi ned, Object, Array, Stri ng, Number,Boolea n, Fu nctio n, RegExp, Eleme nt, NaN, Infin ite.forEach(fu ncti on (t) &n bsp;typeis + t = function (o) &n bsp; return type(o) = t.toLowerCase();&n bsp;);type.isObject(); / truetyp
7、e.isNumber(NaN); / falsetype.isEleme nt(docume nt.createEleme nt(div); / true对象的属性模型在JavaScript内部,每个属性都有一个对应的attributes对象,保存该属性的一些元信息。使用 Object.getOwnPropertyDescriptor 方法,可读取 o 对象的 p属性的 attributes 对象。attributes 对象包含如下元信息:value:表示该属性的值,默认为undefined (只要 writable和con figurable有一个为true,就可以改动)。writable
8、:表示该属性的值(value)是否可以改变,默认为true。enumerable:表示该属性是否可枚举,默认为true,也就是该属性会出现在forin和Object.keys()等操作中。一般来说,系统原生的属性(即非用户自定义的属性)都是不可枚 举的。表示可配置性”,默认为true。如果设为false,表示无法删除该属性,也不得改变attributes 对象(value属性除外,如果 writable为true,仍可改变 value),也就是con figurable属性控 制了 attributes对象的可写性。表示该属性的取值函数(getter),默认为undefined。 表示该属性的
9、存值函数(setter),默认为undefined。var o = p: a ;Object.getOw nPropertyDescriptor, p);/ Object / &n bsp;value: a,/ &n bsp;writable: true,/ &n bsp;e nu merable: true,/ &n bsp;c on figurable: true/ Object.defineProperty方法允许通过定义attributes对象,来定义或修改一个属性,然后返回修改后的对象。格式如下:Object.defi neProperty(object, propertyName,
10、 attributesObject)Object.defineProperty方法接受三个参数,第一个是属性所在的对象,第二个是属性名 (它应该是一个字符串),第三个是属性的描述对象。通过此方法定义属性,属性对象的writable、con figurable、enu merable 三个属性的默认值都为false。Object.defi neProperty, p, &n bsp;value: bar);Object.getOw nPropertyDescriptor(o, p);/ Object / &n bsp;value: bar,/ &n bsp;writable: false,/ &
11、n bsp;e nu merable: false,/ &n bsp;c on figurable: false/ 如果一次性定义或修改多个属性,可以使用Object.defineProperties方法。需要注意的是,一旦定义了取值函数get(或存值函数set),就不能将writable设为true,或者同时定义 value属性,否则会报错。var o = Object.defi neProperties(, &n bsp;p1: value: 123, enu merable: true,&n bsp;p2: value: abc, enu merable: true,&n bsp;p3:
12、 &n bsp; get: function () &n bsp; &n bsp;retur n this.p1 + this.p2&n bsp; ,&n bsp; enu merable: true,&n bsp; con figurable: true&n bsp;);enumerable可以用来设置 秘密”属性,如果一个属性的 enumerable为false,贝U for.in 循环、Object.keys方法和JSON.stringify方法都不会取到该属性,但可以通过 o.xx直接获 取它的值。forin循环和Object.keys方法的区别在于,前者包括对象继承自原型对象的属性,
13、而 后者只包括对象本身的属性。如果需要获取对象自身的所有属性,不管enumerable的值,可以使用 Object.getOwnPropertyNames 方法。可配置性决定了一个变量是否可以被删除(delete)。当使用var命令声明变量时,变量的con figurable为false,而不使用var命令声明变量时(或者使用属性赋值的方式声明变量),变量的可配置性为true。这说明,delete只能删除对象的属性。var a1 = 1; / con figurable: falsea2 = 1; / con figurable: true (等价于 this.a2 = 1)除了直接定义以外,
14、属性还可以用存取函数(accessor)定义。其中,存值函数称为setter,使用set命令;取值函数称为getter,使用get命令。利用存取函数,可以实现数据对象与DOM对象的双向绑定。Object.defi neProperty(user, n ame, &n bsp;get: function () &n bsp; retur n docume nt.getEleme ntByld(foo).value&n bsp;,&n bsp;set: function (n ewValue) &n bsp; docume nt.getEleme ntByld(foo).value = n ewV
15、alue;&n bsp;,&n bsp;c on figurable: true);控制对象状态JavaScript提供了三种方法,精确控制一个对象的读写状态,防止对象被改变。最弱一 层的保护是 preventExtensions,其次是 seal, 最强的 freeze。Object.preventExtensions方法可以使得一个对象无法再添加新的属性,但可以用delete命令删除它的现有属性。Object.isExtensible方法可以用来检查是否可以为一个对象添加属 性。Object.seal方法使得一个对象既无法添加新属性,也无法删除旧属性。Object.seal还把现有属性的a
16、ttributes对象的con figurable属性设为false,使得attributes对象不再能改变。 Object.isSealed方法用于检查一个对象是否使用了Object.seal方法。Object.freeze方法可以使得一个对象无法添加新属性、无法删除旧属性、也无法改变属 性的值,使得这个对象实际上变成了常量。Object.isFrozen方法用于检查一个对象是否使用了 Object.freeze()方法。使用上面这些方法锁定对象的可写性,但是依然可以通过改变该对象的原型对象,来为它增加属性。var o = new Object();Object.preve ntExte nsio ns(o);var proto = Object.getPrototypeOf(o);proto.t = hello;o.t/ hello一种解决方案是,把原型也冻结住。var o = Object.seal(&n bsp;Object.create(Object.freeze(x:1),&n bsp; &n bsp;y: value: 2, writable: true);Object.getPrototypeOf(o).t = hello;o.t / un defi nedPS:Object对象包含在所有其
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国智慧消防行业竞争格局与发展前景预测报告
- 2025-2030中国旧电梯更新改造行业市场现状分析及竞争格局与投资发展研究报告
- 2025幼儿园小班下学期户外活动计划
- 文化创意产业投资管理措施
- 红楼梦中的情感表达阅读计划
- 2025年心理健康护理工作总结与计划
- 社会参与与公共文化服务治理-洞察阐释
- 短骨骨折愈合策略-洞察阐释
- 公共交通安全隐患调查报告范文
- 生态环境保护法治-洞察阐释
- (五调)武汉市2025届高三年级五月模拟训练语文试卷(含答案详解)
- 生物安全管理体系文件
- 国家开放大学《工程数学(本)》形考任务1-5答案
- 中国食物成分表2018年(标准版)第6版
- 新版《药品管理法》解读课件
- 《社区治理研究国内外文献综述(1900字)》
- 2023浙江省学生艺术特长测试A级理论复习资料
- 建筑业企业资质职称人员相近专业认定目录
- 欢乐童年放飞梦想六一儿童节文艺汇演流程介绍PPT模板
- GNSS实习报告
- 毕业设计(论文)-CK6150总体及纵向进给和尾座部件的设计
评论
0/150
提交评论