对象

  • 内置对象: 引擎初始化阶段就被创建好的对象。

  • 原生对象 : 除了内置对象,还包括一些在运行过程中动态创建的对象

原生对象

ecma-262 把 原生对象(native object)定义为“独立于宿主环境的 ECMAScript 实现提供的对象” 包括一下几点:

global
Object
Function
Array
String
Boolean
Number
Date
RegExp
Error EvalError
RangeError
ReferenceError
syntaxError、
TypeError、
URIError、
ActiveXObject(服务器方面)、
Enumerator(集合遍历类)、
RegExp(正则表达式)

内置对象(不需要 New)

一个内置的构造器函数是一个内置的对象,也是一个构造函数 常见的有

对象的扩展

js 原生对象的复制和扩展

Object.setPrototypeOf()

Object.setPrototypeOf() 方法设置一个指定的对象的原型 (即, 内部[[Prototype]]属性)到另一个对象或 null。

不建议这么使用 建议使用 objcet.create()来创建带有你想要的[[prototyp]] 的新对象

Object.setPrototypeOf()是 ECMAScript 6 最新草案中的方法,相对于 Object.prototype.proto ,它被认为是修改对象原型更合适的方法

所有的对象都具有 toLocaleString()、toString()和 valueOf()方法。因为所有的对象都继承自 Object, 而前面所说的方法都是 Object 的方法!

toString 方法返回每个值的字符串形式 拼接成了一个字符串,中间用逗号隔开 valueOf() 返回的还是数组的字符串形式

第三行 alert()要接收字符串参数,而第三行传给 alert 是一个数组,所以 alert 会在后台调用 toString 方法,输出数组的字符串类型

二者共同的缺点 无法获取 null 和 undefined 的值

用途的区别 tostring() 用于输出字符串 valueOf()用于算术计算和关系运算

返回值类型的差别 toString 一定将所有内容转为字符串 valueOf 取出对象内部的值, 不进行类型转换。

冷知识: new Object 产生的实例对象是各个类型 Array Number //虽然用法相似,但是 Object(value)与 new Object(value)两者的语义是不同的,Object(value)表示将 value 转成一个对象,new Object(value)则表示新生成一个对象,它的值是 value。

最后更新于

这有帮助吗?