×

JavaScript标准内置对象:Object【构造函数创建一个对象包装器】

作者:Web前端之家2021.01.07来源:Web前端之家浏览:1377评论:0
关键词:jsObject
微信公众号

微信公众号

春节的脚步快近了,但是最近北方的疫情又开始严重了,各种慌张情绪来了,对于昂这种思家心切的人来说,如果不能回家真的很难受,在深圳过年没有老家的那种年味。还有一个月,希望疫情能被控制住,不要重蹈2020。好吧,此时此刻应该静下心来,分享点技术干货;今天分享主题:JavaScript标准内置对象:Object【构造函数创建一个对象包装器】。

Object 构造函数创建一个对象包装器。

语法


// 对象初始化器(Object initialiser)或对象字面量(literal)
{ [nameValuePair1[,nameValuePair2[, ...nameValuePairN] ] ] }

// 以构造函数形式来调用
new Object([value])
  • nameValuePair1, nameValuePair2, ... nameValuePairN

  • 成对的名称(字符串)与值(任何值),其中名称通过冒号与值分隔。

  • value

  • 任何值。

描述

在JavaScript中,几乎所有的对象都是Object类型的实例,它们都会从Object.prototype继承属性和方法。Object 构造函数为给定值创建一个对象包装器。Object构造函数,会根据给定的参数创建对象,具体有以下情况:

  • 如果给定值是 null 或 undefined,将会创建并返回一个空对象

  • 如果传进去的是一个基本类型的值,则会构造其包装类型的对象

  • 如果传进去的是引用类型的值,仍然会返回这个值,经他们复制的变量保有和源对象相同的引用地址

当以非构造函数形式被调用时,Object 的行为等同于 new Object()

Object 构造函数的属性

  • Object.length

  • 值为 1。

  • Object.prototype

  • 可以为所有 Object 类型的对象添加属性。

Object 构造函数的方法

  • Object.assign()

  • 通过复制一个或多个对象来创建一个新的对象。

  • Object.create()

  • 使用指定的原型对象和属性创建一个新对象。

  • Object.defineProperty()

  • 给对象添加一个属性并指定该属性的配置。

  • Object.defineProperties()

  • 给对象添加多个属性并分别指定它们的配置。

  • Object.entries()

  • 返回给定对象自身可枚举属性的 [key, value] 数组。

  • Object.freeze()

  • 冻结对象:其他代码不能删除或更改任何属性。

  • Object.getOwnPropertyDescriptor()

  • 返回对象指定的属性配置。

  • Object.getOwnPropertyNames()

  • 返回一个数组,它包含了指定对象所有的可枚举或不可枚举的属性名。

  • Object.getOwnPropertySymbols()

  • 返回一个数组,它包含了指定对象自身所有的符号属性。

  • Object.getPrototypeOf()

  • 返回指定对象的原型对象。

  • Object.is()

  • 比较两个值是否相同。所有 NaN 值都相等(这与==和===不同)。

  • Object.isExtensible()

  • 判断对象是否可扩展。

  • Object.isFrozen()

  • 判断对象是否已经冻结。

  • Object.isSealed()

  • 判断对象是否已经密封。

  • Object.keys()

  • 返回一个包含所有给定对象自身可枚举属性名称的数组。

  • Object.preventExtensions()

  • 防止对象的任何扩展。

  • Object.seal()

  • 防止其他代码删除对象的属性。

  • Object.setPrototypeOf()

  • 设置对象的原型(即内部 [[Prototype]] 属性)。

  • Object.values()

  • 返回给定对象自身可枚举值的数组。

Object 实例和 Object 原型对象

JavaScript中的所有对象都来自 Object;所有对象从Object.prototype继承方法和属性,尽管它们可能被覆盖。例如,其他构造函数的原型将覆盖 constructor 属性并提供自己的 toString() 方法。Object 原型对象的更改将传播到所有对象,除非受到这些更改的属性和方法将沿原型链进一步覆盖。

属性

  • Object.prototype.constructor

  • 特定的函数,用于创建一个对象的原型。

  • Object.prototype.__proto__

  • 指向当对象被实例化的时候,用作原型的对象。

  • Object.prototype.__noSuchMethod__

  • 当未定义的对象成员被调用作方法的时候,允许定义并执行的函数。

  • Object.prototype.__count__

  • 用于直接返回用户定义的对象中可数的属性的数量。已被废除。

  • Object.prototype.__parent__

  • 用于指向对象的内容。已被废除。

方法

  • Object.prototype.__defineGetter__()

  • 关联一个函数到一个属性。访问该函数时,执行该函数并返回其返回值。

  • Object.prototype.__defineSetter__()

  • 关联一个函数到一个属性。设置该函数时,执行该修改属性的函数。

  • Object.prototype.__lookupGetter__()

  • 返回使用 __defineGetter__ 定义的方法函数 。

  • Object.prototype.__lookupSetter__()

  • 返回使用 __defineSetter__ 定义的方法函数。

  • Object.prototype.hasOwnProperty()

  • 返回一个布尔值 ,表示某个对象是否含有指定的属性,而且此属性非原型链继承的。

  • Object.prototype.isPrototypeOf()

  • 返回一个布尔值,表示指定的对象是否在本对象的原型链中。

  • Object.prototype.propertyIsEnumerable()

  • 判断指定属性是否可枚举,内部属性设置参见 ECMAScript [[Enumerable]] attribute 。

  • Object.prototype.toSource()

  • 返回字符串表示此对象的源代码形式,可以使用此字符串生成一个新的相同的对象。

  • Object.prototype.toLocaleString()

  • 直接调用 toString()方法。

  • Object.prototype.toString()

  • 返回对象的字符串表示。

  • Object.prototype.unwatch()

  • 移除对象某个属性的监听。

  • Object.prototype.valueOf()

  • 返回指定对象的原始值。

  • Object.prototype.watch()

  • 给对象的某个属性增加监听。

  • Object.prototype.eval()

  • 在指定对象为上下文情况下执行javascript字符串代码,已经废弃。

示例

给定 undefined 和 null 类型使用 Object

下面的例子将一个空的 Object 对象存到 o 中:

var o = new Object();
var o = new Object(undefined);
var o = new Object(null);

使用 Object 生成布尔对象

下面的例子将Boolean 对象存到 o 中:

// 等价于 o = new Boolean(true);
var o = new Object(true);
// 等价于 o = new Boolean(false);
var o = new Object(Boolean());

温馨提示:本文作者系Web前端之家 ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://jiangweishan.com/article/js20210107as234234.html

网友评论文明上网理性发言 已有0人参与

发表评论:

最新留言

  • Web前端之家

    只是更轻便,还是有些差距的呢,小项目可以玩玩。...

  • ja124

    这个跟vue和react比,好些吗?...

  • Web前端之家

    OK,已经更新,谢谢!...

  • 韩涛博客

    韩涛博客的域名更换为www.hantaosec.com啦,请更新一下域名哈,谢谢。我还会继续链着咱们...

  • Web前端之家

    请持续关注Web前端之家。...

  • Y4K

    谢谢指导,这下背景问题解决了!...

  • Web前端之家

    要用起来才可以....

  • 钢板

    只有持续的学习和应用才能把知识牢固起来www.jinanxingya.com...

首页|JavaScript|HTML|HTML4|HTML5|CSS3|开发工具|性能优化|移动开发|前端教程|性能优化|开发工具|酷站欣赏|UI设计|前端教程

Copyright © 2021 Web前端之家(www.jiangweishan.com) 版权所有 All Rights Reserved.
粤ICP备12067512号-1

Copyright Your WebSite.Some Rights Reserved.

Powered By Z-BlogPHP 1.6.8 Valyria