object
除了字符串,数字,true,false,null或者undefined以外,其他所有的值在JavaScript里头都是对象。
对象是引用类型,如果变量x表示一个对象,当执行vary = x;语句后,实际上y和x指向的是同一个对象。所以,当你通过y改变对象的值,这种变化也会反映到x上。
创建对象
构造函数
var name = new object(); //但是这里创建的name对象是空对象
字面量对象
var name = {};//但是这里创建的name对象是空对象
对象的数据和方法
一个对象由许多的成员组成,每一个成员都拥有一个名字(像上面的name),和一个值。每一个名字/值(name/value)被逗号分隔开,并且名字和值之间由冒号(:)分隔,最后的一个名字/值后面往往也不加逗号。如下:
var person = {
name: "Mike",
age : 20,
sex: "man"
}
点表示法
用了点表示法来访问对象的属性和方法。如下所示:
person.name;
person.age;
person.sex;
可以用一个对象来做另一个对象成员的值。我们实际上创建了一个子命名空间。需要链式的再使用一次点表示法便可以访问它:
name: {
first: "Mike",
last: "Smith"
}
person.name.first;
括号表示法
这看起来很像访问一个数组的元素,但你使用了关联了值的名字,而不是索引去选择元素。对象有时被称之为关联数组——对象做了字符串到值的映射,而数组做的是数字到值的映射。如下:
person['age'];
person['name']['first'];
设置对象成员
目前我们仅仅看到了如何访问对象的成员,而你其实也可以设置对象成员的值,通过声明你要设置的成员,设置成员并不意味着你只能更新已经存在的属性的值,你完全可以创建新的成员:
person.age = 45
person['name']['last'] = 'Cratchit'
person['eyes'] = 'hazel'
person.farewell = function() { alert("Bye!") }
原型对象概念
无论什么时候,只要创建一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象。在默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个指向 prototype 属性所在函数的指针。而通过这个构造函数,可以继续为原型对象添加其他属性和方法。创建了自定义的构造函数后,其原型对象默认只会取得 constructor 属性;至于其他方法,则都从 Object 继承而来。当调用构造函数创建一个新实例后,该实例的内部将包含一个指针(内部属性),指向构造函数的原型对象。ECMA-262第5版管这个指针叫[[Prototype]] 。脚本中没有标准的方式访问[[Prototype]],但Firefox、Safari和Chrome在每个对象上都支持一个属性proto;而在其他实现中,这个属性对脚本是完全不可见的。不过,要明确的真正重要的一点就是,这个连接存在于示例和构造函数的原型对象之间,而不是存在于实例和构造函数之间。
js 对象主要有那些
1、String对象
2、Number对象
3、 Date对象
4、 RegExp对象