持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情
什么是对象
我们一直在用对象 可是你真的理解对象吗,js中有一个说法是一切皆对象,其实这里说的应该是一切皆可看作对象
对象就是可以拥有属性和方法的一个集合 士兵就是一个对象,它拥有身高体重的属性,保家卫国,吃饭睡觉的动作方法
在座的各位都是对象,世界上的万物都可看作对象,所以说,编程世界多姿多彩
什么是面向对象
面向过程:面向过程专注于如何去解决一个问题的过程步骤。编程特点是由一个个函数去实现每一步的过程步骤,没有类和对象的概念
面向对象:专注于由哪一个对象来解决这个问题,编程特点是出现了一个类,从类中拿到对象,由这个对象去解决具体问题
对于调用者来说,面向过程需要调用者自己去实现各种函数。而面向对象,只需要告诉调用者,对象中具体方法的功能,而不需要调用者了解方法中的实现细节。
面向对象的三大特征:
- 封装
- 继承
- 多态
需要理解的概念
属性:对象本身所拥有的
方法:对象能够做的事情【功能】
抽象:在所有的丢像中获取相同的特征的过程
封装:创建对象的过程
继承:从一个对象中获取另外一个对象的内容
重写:继承父级的方法之后,又对方法进行修改
创建对象的方式
- 字面量的方式
var car = { // 车对象
// 属性
color:'白色',
width: '2000mm',
height: '1500mm',
brand:'BMW',
price:'56W',
// 方法
run: function(){
console.log( this.brand + '在路上行驶');
},
stop: function(msg){
console.log(this.brand + '刹不住车了!' + msg);
}
};
// 调用对象的属性
console.log(car.color);
// 调用对象的方法
car.run('hello');
car.stop('hello');
- Object的方式
var car = new Object();
// 属性
car.width = '1500mm';
car.color = '白色';
car.brand = 'BMW';
// 方法
car.stop = function(){
console.log(this.brand + '刹不住车了!');
}
car.run = function(){
console.log( this.brand + '在路上行驶');
}
console.log(car.color);
car.run();
- 在已经存在的对象上添加属性和方法
var arr = new Array();
// 给数组添加num属性
arr.num = 10;
// 给数组添加getNum方法
arr.getNum = function(){
console.log(arr.num);
}
arr.getNum();
构造对象
1.1 什么是构造对象
当通过 new
关键字调用一个函数时,这个函数就可以称为构造函数
1.2 构造对象和函数的区别
- 调用方式不同
普通函数只用 函数名
调用
构造函数通过 new 关键字 调用
- 返回值不同
普通函数的返回值是函数体内 return 的结果
构造函数的返回值是 new 关键字 生成的对象
原型对象
所有函数
都有一个原型对象 prototype,并且**只有函数**
才拥有原型对象 prototype。
原型对象也是一个对象
原型对象和构造对象
1.1 原型对象 prototype
所有函数
都有一个原型对象 prototype,并且只有函数
才拥有原型对象 prototype。
原型对象也是一个对象
1.2 构造函数 constructor
函数的原型对象的构造函数 是这个函数自己。也就是
Object.prototype.constructor === Object;// true
1.3 实例化对象
- 假如通过new 关键字从
**函数fun**
里创建的**对象obj**
,可以把 obj 称为 fun 的实例化对象; - 通过字面量方式创建的对象可以称为
**Object**
的实例化对象; - 实例化对象和普通对象没有任何区别
1.4 proto
每个对象都拥有一个属性 __proto__
,这是浏览器实现的属性,通过它可以访问到 构造函数constructor 上的 原型对象 prototype;
var obj = new Object();
obj.__proto__ === obj.constructor.prototype;// true
obj.__proto__ === Object.prototype;// true
1.5 new 关键字 创建对象时发生了什么
当使用 new
关键字从 Object
函数上新建一个对象 obj
时,
new
关键字会进行如下的操作:
- 创建一个空的简单JavaScript对象(即
{}
); - 将这个空对象的构造函数
constructor
设置为函数Object
; - 将步骤1新创建的对象作为
this
的指向 ; - 把创建的对象返回给
obj
;