每一个对象都有与之相关的原型(prototype)、类(class)和可扩展性(extension attribute)。

原型 prototype

对象的原型属性是用来继承属性的。通过对象直接量创建的对象使用Object.prototype作为他们的原型。

在ES3中,可以使用 o.constructor.prototype 来检测一个对象的原型。

使用 isPrototypeOf() 方法可以检测一个对象是否是另一个对象的原型(或处于原型链中)。

var p = { x: 1 }; // 定义一个原型对象
var o = Object.create(p);// 使用这个原型创建一个对象
p.isPrototypeOf(o); // true,o继承自p
Object.prototype.isPrototypeOf(o); // true,p继承自Object.prototype

类 class

类属性是一个字符串用以表示对象的类型信息。使用  toString()  方法可以间接查询,返回的格式是 [Object class]。

function clasof(o) {
if (o == null) { return "Null" }
if (o == undefined) { return "Undefined" }
return Object.prototype.toString().call(o).slice(8, -1)
}
classof(null) // "Null"
classof(1) // "Number"
classof(false) // "Boolean"
classof("1") // "String"
classof([]) // "Array" function F() { }
classof(new F()) // "Object"

可扩展性 extension attribute

表示是否可以给对象添加新属性。可以将对象传入 Object.exExtensible()来判断这个对象是否可以扩展。

结尾:

以下是三个属性对比表格:

对象的三个属性进行比较
属性 作用信息 查找方法
原型属性(prototype) 是用来继承属性的 Object.getPrototypeOf():查询原型
类属性(class) 类属性是一个字符串,表示对象的类型信息 Object.prototype.toString()
可扩展行(extension attribute) 表示是否可以给对象添加新属性 Object.exExtensible():判断对象是否可拓展

JavaScript:对象的三个属性的更多相关文章

  1. javaScript数组的三种属性—数组索引、数组内置属性、数组自定义属性

    JS数组也是一种对象. 我们用JavaScript处理的所有东西,都可以视为是一种对象. JavaScript中有两种数据类型,基本类型数对象类型,但是基本类型基本都是包括在对象类型之中的. 数组.函 ...

  2. 深入理解javascript对象系列第二篇——属性操作

    × 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...

  3. 《JS权威指南学习总结--6.8对象的三个属性》

    内容要点: 每一个对象都有与之相关的原型(prototype).类(class)和可扩展性 一.原型属性 1.对象的原型属性是用来继承属性的,这个属性是如此重要,以至于我们经常把 "0的原型 ...

  4. JavaScript对象的两类属性(数据属性与访问器属性)

    对JavaScript来说,属性并非只是简单的名称和值,JavaScript用一组特征(attribute)来描述属性 (property). 第一类属性数据属性具有四个特征. value:就是属性的 ...

  5. 简单方法判断JavaScript对象为null或者属性为空

    对已声明但未初始化的和未声明的变量执行typeof,都返回undefined,null表示一个空对象指针,typeof操作会返回object 首先说下null与undefined区别: 对已声明但未初 ...

  6. 判断JavaScript对象为null或者属性为空

    http://blog.csdn.net/yiluoak_47/article/details/7766760 首先说下null与undefined区别: 对已声明但未初始化的和未声明的变量执行typ ...

  7. Javascript 对象的创建和属性的判定

    1. 创建对象的方法: 直接使用new 对Object对象进行操作,即对Object 对象进行实例化 <!DOCTYPE html> <html lang="en" ...

  8. JavaScript对象(三)

    序列化对象: 对象序列化:对象的状态转化为字符串,也可以将字符串还原为对象.方法:JSON.stringify(),用来序列化,JSON.parse(),用来还原对象. JSON(JavaScript ...

  9. 对JavaScript对象数组按指定属性和排序方向进行排序

    引子 在以数据为中心的信息系统中,以表格形式展示数据是在常见不过的方式了.对数据进行排序是必不可少的功能.排序可以分为按单个字段排序和按多个字段不同排序方向排序.单字段排序局限性较大,不能满足用户对数 ...

  10. JavaScript对象中的this属性

    this属性表示当前对象,如果在全局作用范围内使用this,则指代当前页面对象window: 如果在函数中使用this,则this指代什么是根据运行时此函数在什么对象上被调用. 我们还可以使用appl ...

随机推荐

  1. 音视频开发进阶——YUV与RGB的采样与存储格式

    在上一篇文章中,我们带大家了解了视频.图像.像素和色彩之间的关系,还初步认识了两种常用的色彩空间,分别是大家比较熟悉的 RGB,以及更受视频领域青睐的 YUV.今天,我们将继续深入学习 RGB.YUV ...

  2. 快速实现 CDN 直播

    功能简介 ZEGO Express SDK 支持推流到 CDN(Content Delivery Network,内容分发网络),包括转推 CDN 和直推 CDN 两种功能.开发者基于该功能可打通 R ...

  3. SpringBoot项目:net.sf.jsqlparser.parser.ParseException: Encountered unexpected token:XXXXX

    原文地址 写在前面 最近开发过程中,在where条件中使用IF函数,在MySQL数据库中,使用Navicat运行没有问题,但是运行项目的时候,死活过不去,一直报错,后来一番折腾找到了解决方案,所以,以 ...

  4. 关于开设go语言专题的说明

    这个博客账号已经停更了约5年,期间我经历了比较多的事情,开始几个github开源项目,例如go-etl已经有两年.现在已经我在这方面有了许多积累,足够开设相关的专题.不用担心博主会断更,因为相关的内容 ...

  5. Redis从入门到放弃(4):3种新数据类型

    1.介绍 前面的文章已经介绍了redis的5种基本数据类型,redis6中另外还有3种特殊的数据类型,分别是 Bitmaps (位图).HyperLogLogs(基数统计)和 geospatial ( ...

  6. jsp中的一些问题

    jsp里的${pageContext.request.contextPath} 在JSP中,${pageContext.request.contextPath}是一个EL表达式(Expression ...

  7. debian11安装配置记录

    安装 软件包默认是桌面环境 + gnome + 标准安装.如果做服务器,建议标准安装 + ssh server 设置静态ip cd /etc/network/interfaces.d vi ifcfg ...

  8. Docker Dockerfile指令大全

    FROM-指定基础镜像 指定基础镜像,并且Dockerfile中第一条指令必须是FROM指令,且在同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令. # 语法格式 FROM < ...

  9. Kettle实例(获取Token并带入请求接口拉取数据到本地)

    背景 近期工作中遇到许多需要协同的表单文档被放到云文档,那么我们本地做数据分析就需要先抽取云文档实时数据到本地数据库,根据接口文档我们需要先获取Token,再将返回值带到接口中发起请求拉取数据,因为在 ...

  10. 十年磨一剑的华为云GES,高明在哪

    本文分享自华为云社区<华为云GES:十年磨一剑,打造业界一流的云原生分布式图数据库>,作者:GES图引擎服务小图 . 1.浅谈云原生图数据库 图数据库(graph database)是一个 ...