面向对象
2017-10-13 本文已影响0人
童_268a
为什么学习面向对象?
我真的不知道!
1.面向对象 编程:采用面向对象的思想来编写程序
找对象
2.面向过程 编程: 意思采用面向过程的思想来编写程序
按步骤解决问题: 1,2,3...
3.面向对象 编程思想: 万物皆对象
(1)找对象
(2)实现对象
创建对象的方式
- 构造函数
(1)格式:
function Cat(参数列表) {
this.name // this 代表new出来的对象
this.miaow = function() {}
}
new Cat(参数列表) // 代表创建对象
(2)原型函数:
每个构造函数中都存在 1个隐藏的对象,名字是 prototype, 原型
原型对象 是被所有实例对象 公用的!是唯一的
总结: 找原型对象有2个办法:
1. 构造函数名.prototype
2. 对象名.__proto__ (chrome浏览器才可以使用)
- 函数创建的形式(工厂模式)
function create() {
var obj = {}
return obj;
}
3.面向对象编程的特点:
1. 封装(属性 和 行为 都捆绑在一起)
函数: 把代码捆在一起
优点:
(1) 重复利用
(2) 便于管理,代码更加清晰
2.继承
为了让子类继承父类的属性(也包括方法),首先需要定义一个构造函数。
然后,将父类的新实例赋值给构造函数的原型.
例如:
创建三种动物 对象如下:
1. 猫 4条腿 喵喵叫
2. 加菲猫 4条腿,1对蓝眼睛 喵喵叫、讲笑话
3. Tom猫 4条腿,蓝色毛发 喵喵叫、讲笑话、抓老鼠
代码
function TomCat() {
this.color = "蓝色毛发";
}
// 继承
TomCat.prototype = new Cat();
TomCat.prototype.joke = function() {
console.log("讲笑话。哈哈哈");
}
TomCat.prototype.catchmouse = function() {
console.log("抓老鼠");
}
function JFCat() {
this.eye = "蓝眼睛"
}
// 注意 顺序,先继承,再增加!
// 继承猫
JFCat.prototype = new Cat();
// 增加了讲笑话的方法
JFCat.prototype.joke = function() {
console.log("讲笑话")
}
function Cat() {
this.legs = 4; // 增加属性 腿
}
// 对于对象中 方法/行为/动作/函数 一般建议放在 原型 中!
// 将方法 放到原型对象中,这样节省空间,更好些!
Cat.prototype.miaow = function() {
console.log("喵喵喵~")
}
// 调用
var cat1 = new Cat();
cat1.miaow();
3.多态:
字面意思多种状态,在面向对象语言中,接口的多种不同的实现方式即为多态。