OOP 指什么?有哪些特性
OOP英文全称是Object Oriented Programming,翻译过来就是面向对象编程,它主要有三个特性:封装、继承与多态
封装可以理解成把程序规则的分成很多块,其中一块一块的就是我们常说的类,每一块当中都有稳定的部分和可变的部分,然而我们就需要将这俩部分分离出来,将稳定的部分展现给别人看,可变的部分隐藏起来,以便以后修改,这种工作就是我们常说的封装。
那么封装有什么好处呢?
使用者只需要了解如何去使用或调用类和接口,不用在乎类的内部是怎么实现的易扩展,如果我们有可以扩展的功能只需要在接口中定义即可继承给程序员提供了可复用代码的优势,子类可以通过继承,可实现直接访问父类里的属性和方法等等一些元素,这样可以省略了我们的代码量,提高了我们的效率
多态简单来说就是多种形态,一件事情或一个动作可以有多种不同的结果或意义或者还可以这样说同一操作作用于不同的对象,能够有不同的解释,产生不同的结果,这就是多态
多态的好处,多态是通过很多个子类来实现同一个接口,可以达成很多不一样的结果,它在应用中体现了灵活多样的操作,从而提高了我们的使用效率。
如何通过构造函数的方式创建一个拥有属性和方法的对象?
function Person(name,age){
this.name = name;
this.age = age;
}
Person.prototype.bind = function(){
console.log(this.name)
}
var v = new Person('chris','24')
v.bind() //chris
prototype 是什么?有什么特性
JavaScript的每个对象都继承另一个对象,后者称为“原型”(prototype)对象。只有null除外,它没有自己的原型对象。
原型对象上的所有属性和方法,都能被派生对象共享。这就是JavaScript继承机制的基本设计。
通过构造函数生成实例对象时,会自动为实例对象分配原型对象。每一个构造函数都有一个prototype属性,这个属性就是实例对象的原型对象。
画出如下代码的原型图
function People (name){
this.name = name;
this.sayName = function(){
console.log('my name is:' + this.name);
}
}
People.prototype.walk = function(){
console.log(this.name + ' is walking');
}
var p1 = new People('饥人谷');
var p2 = new People('前端');
创建一个 Car 对象,拥有属性name、color、status;拥有方法run,stop,getStatus
function Car(name,color,status){
this.name = name;
this.color = color;
this.status = status;
}
Car.prototype = {
run:function(){return 'run'},
stop:function(){return 'stop'},
getStatus:function(){return this.status}
}
var car = new Car('BMW','white','run')
car.getStatus() //'run'
创建一个 GoTop 对象,当 new 一个 GotTop 对象则会在页面上创建一个回到顶部的元素,点击页面滚动到顶部。拥有以下属性和方法
-
ct
属性,GoTop 对应的 DOM 元素的容器 -
target
属性, GoTop 对应的 DOM 元素 -
bindEvent
方法, 用于绑定事件
4createNode
方法, 用于在容器内创建节点