js对象的特征

js对象的特征

1、属性的分类:自有属性(own property)、继承属性(inherited property);
【注】一个名值对用‘,’来分隔;

2、原型:每一个js对象(null除外:空引用)都和另一个对象相关联,另一个对象就是原型对象,每一个对象都从原型继承属性;

【注】:

(1)可以通过对象.constructor来得到对象的构造函数的类型;

(2)字面量创建的对象相当于new Object()创建出来的;

3、原型链(prototype chain):所有内置构造函数都具有一个继承自Object.prototype的原型,通过层级的原型继承形成的链接;

4、Object.create():创建的是空对象,没有自己的属性;

(1)当前对象的属性赋值不会修改原型对象的属性值,而是添加到自己对象里面作为新的属性;

(2)此时创建的对象是顶层原型对象,连toString()都没有;
在这里插入图片描述

5、属性相关:
(1)继承:属性赋值操作首先检查原型链,以此判断是否允许赋值操作;

(2)属性访问错误:查询一个不存在的属性并不会报错,而是返回undefined,但是查询的属性的对象不存在,就会报错;

(3)删除属性:delete删除对象的属性,它的操作数是一个属性访问表达式,但它只是断开属性和宿主对象的联系,而不是真正的删除该属性,而不会去操作属性中的属性;

【注】继承的属性以及全局下的变量和函数delete是不能删除的,因为它们覆盖的面太大了;

(4)检测属性:判断某个属性是否存在于某个对象中,可以通过in(会查询到继承来的属性)、hasOwnProperty()和propertyIsEnumerable()方法,甚至也可以仅通过属性查询;

(5)枚举属性:
—— for/in循环可以在循环体中遍历对象中所有可枚举的属性(包括自有和继承属性),把属性名称赋值给循环变量;

—— Object.keys(),它返回一个数组,这个数组由对象中可枚举的自有属性的名称组成;

—— Object.getOwnPropertyNames(),它和Object.keys()类似,只是它返回对象的所有自有属性的名称,而不仅仅是可枚举的属性;

(6)getter和setter:存取器属性也是可以继承的;

6、对象特性:
(1)原型属性:是在实例对象创建之初就设置好的;查询对象的原型

(2)可扩展性:表示是否可以给对象添加新属性;

—— 所有内置对象和自定义对象都是显式可扩展的;

—— 宿主对象的可扩展性是由JavaScript引擎定义的。

7、序列化对象:对象序列化(serialization)是指将对象的状态转换为字符串,也可将字符串还原为对象;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值