1、对象 Object
var obj = {
name:"red",
age:"18",
sex:"男",
sonObj:{
name:"Tom",
age:"3",
sex:"女"
}
}
// 获取对象中的属性
console.info(obj.name) // red
console.info(obj.sonObj.age) //3
// 添加属性
obj.work = "student"
// 修改属性
obj.age = 20
// 删除属性
delete obj.sex
对象中不存在的属性不会报错,如下:
var obj = {
name:'aaa'
}
console.info(name) // 报错,因为name没有被定义过
console.info(obj.age) // undefined 对象中不错在的属性不会报错,会返回undefined
对象属性命名需要注意如下:
var obj = {
a bc:123 // 报错 -> 键不使用引号时,需要满足变量的要求
}
var obj2 = {
"a bc":123 // 正确写法 -> 使用引号将属性引起来
}
obj2["a bc"] //obj2 中的写法 不能使用 .操作符 访问属性 ,只能使用[]操作符访问
点操作符和[]操作
var obj = {
name:"Jerry",
age:20
}
// 添加属性的三种方法
1 obj.sex = "男"
2 obj["sex"] = "男"
3 var x = "sex"; obj[x] = "男"
注意
使用 [ 变量 ] 的形式命名属性名 (多用于 ES6 - Symbol 数据类型做属性名时使用)
// 创建变量
let a = "name"
let b = "age"
// 将定义好的变量作为属性名
let obj = {
[a]:'tom',
[b]:18
}
// 根据变量名获取获取对应的属性值 => 只能使用 [] 的形式获取
console.info( obj[a] ) // tom
console.info( obj.a ) // undefined
// 普通方式获取 => 使用[ 变量 ] 做为属性名时,普通获取方式不再能使用 [] 的形式获取
console.info( obj.name ) // tom
console.info( obj[name] ) // undefined
2、数组 Array
数组使用 [ ] 定义
var arr = [ 1,2,"a",{...} ]
console.info(arr.length) // 4 获取数组的长度
注意:数组下标从 0 开始
跨下标定义数组的某项,会留 empty 空位站位
var arr = [1,2,3];
arr[10] = 100; // arr[3]到arr[9] 的值为 empty (留了空位)
3、函数 function
定义函数的两种方式
// 方式1
var fn = function(){
console.info("定义了一个函数fn")
}
// 方式2
function fn2(){
console.info("定义了一个函数fn2")
}
// 执行一个函数
fn()
4、基本数据类型的 赋值
- 可以理解为复制一个文本
var a = 10;
var b = a; //将a的值拷贝一份赋值给b,此时b改变,a不会改变
5、复杂数据类型的 赋值
- 可以理解为发送一个文本的快捷方式到桌面
var obj = { ... }
// 初次创建一个复杂数据类型时,会创建一个{...} ,并将obj指向此对象的地址
// 此后 若obj被赋值给了 其他变量时,即将此对象的地址赋值给新的变量
// 当obj改变时,即改变了obj所指向地址的对象,所以新变量也会改变
总结:基础数据类型赋值时给值 , 引用数据类型赋值时给地址
注意:基础数据类型在非严格模式下可以添加属性,但不会被保存下来。严格模式下给基础数据类型添加属性会报错。
网友评论