尽管JavaScript的拥趸一再强调js的面相对象,然而,或许只有在名为Object的这一类型中才能勉强理解出-- well...下面就让我们一起来浅析JavaScript中的对象类型Object
ECMAScript中的对象其实就是一组数据和功能的集合。
ECMAScript中Object是所有对象的基础。
理解:Object类型是所有它的实例的基础,换句话说,Object类型所具有的任何属性和方法也同样存在于更具体的对象中。
Object的实例都具有以下属性和方法
1.Constructor:保存着用于创建当前对象的函数
2.hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是原型中)是否存在。其中作为参数的属性名必须以字符串指定
3.isPrototypeOf(object):用于检查传入的对象是否是另一个对象的原型
4.toLocalString():返回对象的字符串表示,该字符串与执行环境相对应
5.toString():返回对象的字符串表示
6.valueOf():返回对象的字符串、数字或布尔值表示。通常与toString()方法的返回值相同
全局对象
全局对象在JavaScript中有着重要的用途: 全局对象的属性是全局定义的符号, JavaScript程序可以直接使用,当解释器启动时,它将创建一个新的全局对象,并给它一组定义的初始属性:
全局属性,比如undefined, Infinity
全局函数,比如parseInt()
构造函数,比如Data(),
全局对象,比如Math和JSON
包装对象
看这样一个例子:
var s = "hello world!";
var word = s.substring(s.indexOf(" ")+1, s.length);
字符串既然不是对象,为什么它会有属性呢?只要引用了字符串s的属性,JavaScript就会将字符串值通过调用new String(s)的方式转换成对象,
同字符串一样,数字和布尔值也有相应的方法。其他类似的包装类:
Number object
String object
Boolean Object
Function Object
RegExp Object
Error
SyntaxError
ReferenceError
TypeError
…
不可变的原始值和可变的原始对象引用
原始值是不可改变的,原始值的比较是值比较, 对象的比较并非值比较:即使两个对象包含同样的属性以及相同的值,他们也不是相等的。我们通常将对象称为引用类型,对象的值都是引用,对象的比较也是引用的比较,当且仅当他们引用同一个基独享,他们才相等