面向对象的三大特征
1.封装
- 通过类的封装,隐藏内部细节
- 将复杂的逻辑通过函数封装起来,使用的时候调用即可,不需要考虑内部的细节
2.继承
- 子类可以从父元素继承属性或者方法
3.多态
- 指由继承而产生的相关的不同的类,其对象对同一消息会作出不同的反应
- 简单来说就是不同类型的不同形态
javascript中的继承
1.混入式继承
var o1 = {
name: "jack",
age: 18
}
var obj = {};
obj.extend = function (object) {
for (var k in object) {
this[k] = object[k];
}
}
obj.extend(o1);
console.log(obj);
}
2.原型继承
- 利用对象的动态性
function Person() {
}
Person.prototype.say = function () {
return "hello"
};
Person.prototype.coding = function () {
return "coding"
};
var p = new Person();
console.log(p.say());
console.log(p.coding());
- 利用覆盖原型对象
function Car() {
};
Car.prototype = {
//默认的原型对象中有constructor属性,为了与原来的对象一致
//需要手动添加constructor属性
constructor: Car,
drive: function () {
return "drive fast"
}
};
var car = new Car();
console.log(car.drive());
- 利用混入式继承
function Student() {
}
Student.prototype.extend = function (object) {
for (var k in object) {
this[k] = object[k];
}
}
Student.prototype.extend({
name: "jack",
age: 18
})
var student = new Student();
console.log(student.name);
3.Object.create方法
//Object.create
//语法 : var newObj = Object.create( 参数对象 );
//将参数对象 看做 新对象 的原型对象
var obj = {
apple : "苹果",
orange : "橘子"
}
var newobj = Object.create(obj);
console.log(newobj.apple);
网友评论