对象是javaScript的基本数据类型。是一个名称与值配对的集合,这种名称与值的配对被称为属性,属性名是字符串,因此我们可以把对象看做是从字符串到值的映射,这种基本数据结构有很多种叫法“散列”(hash)、“散列表“(hashtable)、“字典”(dictionary)、"并联数组"(associativearray),然而对象不仅仅是字符串到值的映射,除了可以保持自由的属性,JavaScript对象还可以从一个称为原型的对象继承属性。对象的方法通常是继承属性。这种“原型式继承”是JavaScript的核心特征。
对象除了包含属性之外,每个对象还拥有三个相关的对象特征:
1.对象的原型指向另外一个对象,本对象的属性继承自它的原型对象。
2.对象的类是一个标识对象类型的字符串。
3.对象的扩展标记知名了是否时可以向该对象添加属性。
以下是一些术语帮着区分三类JavaScript对象和俩类属性作区分:
1.内置对象是由ECMAScript规范定义的对象或类。比如说;数组、函数、日期。
2.宿主对象是由JavaScript解释器所潜入的宿主环境(比如说web浏览器)定义的。客户端JavaScript中表示网页结构的HTMLElement对象均是宿主对象。既然宿主环境定义的方法可以当成普通的SavaSript函数对象,那么宿主对象也可以当成内置对象。
3.自定义对象是由直接在对象中定义的属性。
4.自有属性是直接在对象中定义的属性。
5.继承属性是在对象的原型对象中定义的属性。
下面是一些常见的对象,以及对象的生成
1.对象字面表达式:
对象名={属性名:属性值,属性名:属性值,。。。。。。}
{ x: 2, y: 1 } //属性名是字符
{ "x": 2, "y": 1 } //属性名是字符串
{ 'x': 2, 'y': 1 } //属性名是字符串
{ 2: 1, 1: 2} //属性名是数值
{ x: 2, status: true, info: { name:"Tom", age:23,student: false} }//属性值包含对象
{ x: 2, say_hello: function(){ console.log( "Hello!" ) } } //属性值包含函数
//像上面这种没有函数名的函数叫做"匿名函数"
2.对象的new表达式:
new运算符创建并初始化一个新对象,关键字new后面跟随一个函数调用这里的函数称为构造函数构造函数用以初始化一个新创建的对象。
var robot = new Object(); //生成一个实例对象robot
robot.name = "Cat"; //定义实例对象robot的name属性,并赋值
robot.age = 1;
robot.info = {height: 120, weight: 40}
robot.say_hello = function(){ console.log("Hello!") };
有一个题大家可以做一下方便深入理解
var player = { code : 2, name : 'Tom', status : 'active', score : [ 7, 5, 9, 5 ] }
如何才能将player属性score的内容改为[7,5,9,7],方法是多样的,我们可以player.score[3]=7 或者player.score=[7,5,9,7]或者player.score[3] = player.score[0]