什么是面向对象?
面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物
-选自百度百科
通俗的理解就是:万物皆对象!世界上的任何事和物都可以被视为对象,而我们需要关注的是对象本身可以实现的功能。
js中的面向对象
面向对象在js里有两个层次的含义:
一,使用面向对象函数
二,构造面向对象函数
面向对象的特点
- 继承:
继承的意思是,在实现同一种功能的前提下,新对象可以使用旧对象的属性和方法。
/**
-利用函数创建的作用域达到数据封装的目的
-@type{{getName, setName}}
*/
var obj = (function(){
var name = "www";
return {
getName: function(){
return name;
},
setName:function(){
name = val;
}
}
})();
obj.name;
bj.getName();
2 . 封装:即把能够实现功能的函数封装起来,在面向对象里叫做方法。简单来说就是把实现功能的函数写成方法。
继承在静态语言中,例如java有关键字。虽然在es6中也有extend以及class,但其本质仍实现的是基于原型机制的
/**
*j简单的es5原型继承
*@constructor
*/
var A = function(){
};
A.prototype = {name:"www};
var B = function(){
};
B.prototype = new A();
var b = new B();
console.log(b.name);
/**
*es6继承实现demo
*/
class Peopel{
constructors(){
this.name = name;
}
getName(){
return this.name;
}
class Black extends People{
constructor(name){
super(name);
}
speak(){
return " Hello World";
}
}
var p = new Black("www");
console.log(p.getName() + 'savs' + speak());
- 多态:一个变量在引用不同类型的情况下的不同状态。多态开发在开发组件和模块化开发的时候能节省很多资源。
/**
*多态的实现案例
*@param friut
*/
var voild = function(friut){
friut.sound();
}
var apple = function(){
}
var pin = function(){
}
apple.prototype.sound = function(){
console.log("苹果");
}
pin.prototype.sound = function(){
console.log("桃子");
}
voild(new apple());
voild(new pin());