资讯专栏INFORMATION COLUMN

Object对象

Joyven / 1631人阅读

摘要:前言原生提供对象的所有其他对象都继承自对象,即这些对象都是的实例对象的原生方法分为两类本身的方法的实例方法对象本身的方法直接定义在对象的方法方法就是直接定义在对象上的实例方法定义在原型对象上的方法,可以被实例直接使用定义了一个方法,然后生成

前言

JavaScript原生提供Object对象

JavaScript的所有其他对象都继承自Object对象,即这些对象都是Object的实例

Object对象的原生方法分为两类:Object本身的方法、Object的实例方法

Object对象本身的方法
直接定义在Object对象的方法
Object.print = function (o) {
    console.log(o);
}

print方法就是直接定义在Object对象上

Object的实例方法
定义在Object原型对象Object.prototype上的方法,可以被Object实例直接使用
Object.prototype.print = function () {
    console.log(this);
};

var obj = new Object();
obj.print() // Object

Object.prototype定义了一个print方法,然后生成一个Object的实例obj,obj直接继承了Object.prototype的属性和方法,所以可以直接使用obj.print调用print方法,实质上就是obj对象的print方法就是调用Object.prototype.print方法

凡是定义在Object.prototype对象上面的属性和方法,将被所有实例对象共享

Object()
Object本身是一个函数,可以当作工具方法使用,将任意值转为对象

此方法常用于保证某个值一定是对象

1、Object()返回一个空对象
var obj = Object();
// 等同于下面两条语句
var obj = Object(undefined);
var obj = Object(null);
obj instanceof Object // true

Object()返回一个空对象

instanceof运算符验证,一个对象是否为指定的构造函数的实例,obj对象时Object的实例

2、如果参数是原始类型的值,Object()将其转为对应的包装对象的实例
var obj = Object(1);
obj instanceof Object // true
obj instanceof Number // true

var obj = Object("foo");
obj instanceof Object // true
obj instanceof String // true
3、如果参数是一个对象,则总是返回该对象,不用转换
var arr = [];
var obj = Object(arr); // 返回原数组
obj === arr // true

var fn = function() {};
var obj = Object(fn); // 返回原函数
obj === fn // true

// 一个判断变量是否为对象的函数
function isObject(value) {
    return value === Object(value);
}
isObject([]) // true
isObject(true) // false
Object构造函数
通过var obj = new Object()的写法生成新对象,与字面量的写法var obj = {}是等价的
构造函数的用法与工具方法相同点

使用时,可以接受一个参数,如果该参数是一个对象,则直接返回这个对象,如果是一个原始类型的值,则返回该值对应的包装对象

   var o1 = {a: 1};
   var o2 = new Object(o1);
   o1 === o1 // true 

   var obj = new Object(123);
   obj instanceof Number // true

构造函数的用法与工具方法不同点

Object(value)表示将value转成一个对象

new Object(value)表示生成一个对象,它的值是value

部署在Object对象自身的方法 Object.keys()
用来遍历对象的属性

Object.keys方法的参数是一个对象,返回一个数组,该数组的成员都是该对象自身的所有属性名,而不是继承的属性名

只返回可枚举的属性

var obj = {
    p1: 123,
    p2: 456,
};
Object.keys(obj) // ["p1", "p2"]
Object.getOwnPropertyNames()
用来遍历对象的属性

接受一个对象作为参数,返回一个数组,包含了该对象自身的所有属性名

还返回不可枚举的属性名

var obj = {
    p1: 123,
    p2: 456,
};
Object.keys(obj) // ["p1", "p2"]

var a = ["hello", "hi"];
Object.keys(a) // ["0", "1"]
Object.getOwnPropertyNames(a) // ["0", "1", "length"]

可以用上面两个方法提供计算对象属性个数的方法

var obj = {
    p1: 1,
    p2: 2
};
Object.keys(obj).length // 2
Object.getOwnPropertyNames(obj).length // 2
其他方法

对象属性模型的相关方法

Object.getOwnPropertyDescriptor():获取某个属性的描述对象
Object.defineProperty():通过描述对象,定义某个属性
Object.defineProperties():通过描述对象,定义多个属性

控制对象状态的方法

Object.preventExtensions():防止对象扩展
Object.isExtensible():判断对象是否可扩展
Object.seal():禁止对象配置
Object.isSealed():判断一个对象是否可配置
Object.freeze():冻结一个对象
Object.isFrozen():判断一个对象是否被冻结

原型链相关方法

Object.create():该方法可以指定原型对象和属性,返回一个新的对象
Object.getPrototypeOf():获取对象的Prototype对象

Object的实例方法
定义在Object.prototype对象,所有Object的实例对象都继承了这些方法
主要的Object实例对象的方法

Object.prototype.valueOf():返回当前对象对应的值

Object.prototype.toString():返回当前对象对应的字符串形式

Object.prototype.toLocaleString():返回当前对象对应的本地字符串形式

Object.prototype.hasOwnProperty():判断某个属性是否为当前对象自身的属性,还是继承自原型对象的属性

Object.prototype.isPrototypeOf():判断当前对象是否为另一个对象的原型

Object.prototype.propertyIsEnumerable():判断某个属性是否可枚举

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

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

相关文章

  • Object 的各种方法

    摘要:等同于构造函数与的用法很相似,几乎一模一样。实例对象的方法接受一个字符串作为参数,返回一个布尔值,表示该实例对象自身是否具有该属性。等同于方法生成的对象,继承了它的原型对象的构造函数。 分类 Object() 函数 Object 本身是一个函数,用来将任意值转为对象。 如果参数为空(或者为 undefined 和 null),Object() 返回一个空对象。 var obj = Ob...

    gghyoo 评论0 收藏0
  • 标准库(一)object对象

    摘要:控制对象状态的方法防止对象扩展。判断一个对象是否被冻结。返回当前对象对应的值。方法的作用是返回一个对象的字符串形式上面代码表示,对于一个对象调用方法,会返回字符串用途通过自定义方法,可以让对象在自动类型转换时,得到想要的字符串形式。 概述Object()Object 构造函数Object 的静态方法「本身的方法Object.keys(),Object.getOwnPropertyNam...

    Muninn 评论0 收藏0
  • JavaScript引用类型---Object

    摘要:一对象初始化创建对象的两种方法对象初始化器或对象字面量参数成对的名称字符串与值任何值,其中名称通过冒号与值分隔之后简化了字面量写法写法以构造函数形式来调用参数任何值访问对象属性对象属性可以用下标小圆点标记或者方括号标记访问从开始,对象初始化 一、对象初始化 创建对象的两种方法: 1.对象初始化器或对象字面量:{[nameValuePair1[, nameValuePair2[, ......

    RobinTang 评论0 收藏0
  • 《JavaScript程序设计》—— 标准对象 Object

    摘要:需要链接标准参考教程对象阮一峰标准构造器函数可能是最重要的对象之一,尽管我们从来不会直接调用它。该方法返回被冻结的对象。 Object 需要链接: MDN —— Object JavaScript标准参考教程(Object对象)——阮一峰 标准构造器函数Object可能是JavaScript最重要的对象之一,尽管我们从来不会直接调用它。每当使用一个对象直接量时,都会隐式调用它: ...

    Meils 评论0 收藏0
  • JavaScript之Object

    摘要:当以非构造函数形式被调用时,等同于。因此只有字符串会以数组形式,拷贝入目标对象,其他值即数值字符串和布尔值都不会产生效果。注意,布尔值数值字符串分别转成对应的包装对象时,它们的原始值都在包装对象的内部属性上面。拥有布尔值的字段的默认值都是。 Object Object构造函数创建一个对象包装器。如果给定值是 null or undefined,将会创建并返回一个空对象,否则,将返回一个...

    高胜山 评论0 收藏0

发表评论

0条评论

Joyven

|高级讲师

TA的文章

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