1、什么是对象
对象是属性和方法的集合,列如:汽车,它的属性有:轮胎,车门等,方法有:能跑,所以说对象是属性与方法的集合
对象是javascript的核心概念,在js任何不是字符串,数值,符号或true、false、null,undefined的值都是对象,即使字符串,数值和布尔值不是对象,他们的行为也类似不可修改的对象
2、什么是面向对象
面向对象简称:oop,是过程式代码的高度封装,目的在于通过把一些通用的方法和属性封装在一起从而提高代码的可复用性,减少代码量;
但是,js虽然是一门面向对象编程语言,可是它却不像python、java一样拥有class类的概念,虽然ES6中新增了class关键字,可在js中class也就是一个语法糖,为了让代码看起来更加简洁,高效。但本质上还是一个函数
3、面向对象的特点
继承:子类继承父类的方法和属性
封装:封装的方法和属性
多态 :以继承为基础,子类在继承了父类的方法后,可以重写父类中的方法
4、对象的声明方式
1、通过字面量来声明 ,初始化创建是可以为空,也可以传值
let obj = {}//为空
let obj1 = {name:'张三'}//初始化有值
2、通过new实例化
let obj = new Object();
3、通过构造函数来声明对象
//声明构造函数,注构造函数首字母要大写
function Fn1(){
this.name = '李四';
this.live = '唱跳'
}
let fn = new Fn1();
console.log(fn);//Fn1 {name: '李四', live: '唱跳'}
4、通过工厂函数来声明对象
//声明工厂函数
function Fn1(){
let obj = {};
obj.name = '李四';
obj.live = '喝酒烫头'
return obj
}
let fn = Fn1();
console.log(fn);//{name: '李四', live: '喝酒烫头'}
5、对象的访问
1、通过 . 来访问
let obj = {name:'李四',age:23}
console.log(obj.name)//李四
2、通过 [ ] 来访问
let obj = {name:'李四',age:12};
console.log(obj[name])
3、 . 和 [ ] 的区别
- 在通过 . 访问对象属性的时候,要符合命名规范,后面不能跟变量
- 在通过 [ ] 访问对象属性的时候,可以不符合命名规范,后面能跟变量,比如可以在for...in中使用
4 、访问对象属性的时候,如果该属性不存在,则返回undefined