对象是 JavaScript 中的一种数据类型
是一个 引用数据类型
定义变量时,变量中存储的是 应用数据类型的内存地址
对象的具体数据,存储在堆中
对象的变量名称,存储在栈中
通过变量存储的内存地址, 找到堆中对象的 存储空间, 调用其中存储的数据
在 JavaScript 中 所有的 数据类型 本质上的存储方式 都是 对象
在 JavaScript 中 有句话 叫 万事万物皆对象
构造函数语法
var 变量 = new 构造函数();
构造函数
Boolean() 生成布尔值的
String() 生成字符串的
Number() 生成数值的
Array() 生成数组的
Object() 生成对象的
Function() 生成函数的
// 字面量方式定义数据类型 var str = '北京'; console.log( typeof(str) ); //string // 所有的数据类型,都可以通过 构造函数语法定义 // 定义生成的统一都是 对象类型 var strObj = new String('上海'); console.log(strObj); //string 0:上 1:海 console.log(typeof(strObj)); //object var arr = new Array(); console.log( typeof( arr ) ); //object
对象的生成方式
1,字面量方式
[] 定义的数组 {} 定义的是对象
对象中,存储数据的方式,必须是键值对
键名:数值 键名就是存储这个数据容器的名称 数值就是存储的数据内容
一个单元 是 键名 : 数值 的语法形式
对象中也是可以存储多个单元,每个单元之间使用逗号间隔
var obj1 = { name:'张三', age:18, sex:'男', } ;
var obj1 = { name:'张三', age:18, sex:'男', 1:100, } ; // 变量 a 中存储键名 name var a = 'name'; // 只是简单粗暴的在 obj1 中 找 a 这个键名 // 直接结果就是 undefined console.log( obj1.a ); //undefined // 解析变量a中存储的 字符串 name 用 name这个存储的键名在 obj1 中调用数据 // 实际调用的是 obj1['name'] console.log( obj1[a] ); //张三
2,通过构造函数语法
var obj2 = new Object();
对象的基本操作,类似于数组的操作
通过 对象.键名 或者 对象[键名] 来操作对象的单元
注意问题:
1, 如果键名是字符串,使用点语法调用,不要加引号
使用[]语法调用,必须要给键名加引号
2, 对象支持所有的数据类型作为键名,如果是数值作为键名
只能使用[]语法调用数据
3, 在 console.log 中看到的显示顺序,是浏览器的执行顺序
与 我们JavaScript程序中定义的单元的顺序无关
4, 如果你需要通过变量,存储键名来调用数据
必须使用 [] 语法 才能正确解析变量中存储的键名
如果是变量,必要加引号
var obj1 = { name:'张三', age:18, sex:'男', 1:100, } ; // 调用 对象中,单元的具体数据: // 对象.键名 或者 对象[键名] console.log(obj1.name); //张三 console.log(obj1['name']); //张三 console.log(obj1[1]); //100 // console.log(obj1.1); //报错
console.log()
1,浏览器规定,有自己的显示顺序,按照数值,字母,顺序显示
2,会显示 数组,对象等引用数据类型,最终的执行效果
先输出,后修改数组对象,也会显示修改的最终结果
var obj1 = { name:'张三', age:18, sex:'男', 1:100, } ; // 当前位置 对象,并没有改变 // 只是浏览器的console.log(),把结果提前输出了 console.log(obj1); //{1: 100, name: "张三", age: 18, sex: "男"}
新增: 对象.键名 = 键值 对象[键名] = 键值
对不存在的键名进制赋值操作,就是新增对象的单元
var obj1 = { name:'张三', age:18, sex:'男', 1:100, } ; // 新增单元 obj1.addr = '北京'; obj1['phone'] = 123456789; console.log(obj1); //{1: 100, name: "张三", age: 18, sex: "男", addr: "北京", phone: 123456789}
修改: 对象.键名 = 键值 对象[键名] = 键值
对已经存在的键名进制赋值操作,就是修改对象的单元
var obj1 = { name:'张三', age:18, sex:'男', 1:100, } ; // 修改单元 obj1.name = '李四'; obj1['sex'] = '女'; console.log(obj1); //{1: 100, name: "李四", age: 18, sex: "女"}
删除: delete( 对象.键名 ) / delete( 对象[键名] )
delete 对象.键名 / delete 对象[键名]
var obj1 = { name:'张三', age:18, sex:'男', 1:100, } ; // 删除对象的单元 delete( obj1.name ); delete obj1['sex']; console.log(obj1); //{1: 100, age: 18}
Comments | NOTHING