JS基础(下)
对象
对象就是属性的集合
属性名合法时可以省略单引号,不合法(比如内含空格)就必须要有单引号
访问对象属性
对象名合法时:obj.name;
不合法时:obj[‘my name’];[]里也可以放函数或表达式
如果访问一个不存在的属性,会返回undefined
遍历对象
- Object.keys(obj);Object是js的一个全局对象
- for(let key in obj){}
判断对象是否包含某一属性
‘name’ in obj:返回逻辑类型
删除属性:delete obj.name
不能用赋值为undefined来删除
对象拷贝
const:引用关系是不可变的,但是引用的位置上的内容是可变的
将一个对象赋值给另一个对象,赋值过去的是引用关系,而不是对象内容,即两个对象指向内存中的同一个对象
输出:
在函数中改变的只是object的引用关系,即将它指向null。但是可以改变它的内容,即在函数中给object[name]赋值,则内存中的对象值也会发生变化,由于object和emptyObj1指向同一个对象,emptyObj1的值也会发生变化
对象深拷贝
递归地遍历所有的属性
为避免循环引用造成无限递归,在allParents里记录已拷贝的对象,每次拷贝前进行查找
class、this与内置对象
class基本语法
使用class构建对象的时候,class里的方法是遍历不到的,但是’area’ in rest的值为true
普通Object和通过class创建的对象的区别:
输出:
基本类型封装
例如:number,string
封装后就可以使用一些已有的方法,直接在基本类型后面加.方法名()即可
数字后面不可以直接加.,所以可以(2).toFixed(3)
数字时钟
上一课留下的作业解答: