面向对象

面向对象
OOP 指什么?有哪些特性
“面向对象编程”(Object Oriented Programming,缩写为OOP)是将真实世界中各种复杂的关系,抽象为一个个对象,然后由对象之间的分工与合作,完成对真实世界的模拟。
其中有两个重要概念就是类和对象。“对象”是单个实物的抽象。通常需要一个模板,表示某一类实物的共同特征,然后“对象”根据这个模板生成。类就是具备一些共同的属性和方法的模板,而在编程中,我们实际需要一个存在的对象来处理我们的问题,于是将类实例化,就得到一个我们需要的对象。
特性:
1.继承性:JavaScript中一切皆对象,子对象会继承父对象的属性和方法,并且可以添加新的属性和方法,继承性使对象具有灵活性,代码的可重用性以及模块性等特点,容易维护和开发。
2.多态性:同一个父对象,有不同的子对象继承,对父对象的方法有不同功能的实现。
3.封装性:将属性和方法集成一个对象,对象之外可以使用这个对象方法,即接口。
2: 如何通过构造函数的方式创建一个拥有属性和方法的对象?
构造函数的写法就是一个普通的函数,但是有自己的特征和用法。通常首字母大写。
创建一个空对象作为this

this.proto
指向构造函数的prototype

运行构造函数

返回this

示例:

var Animal = founction(){

this.name = '动物'

}
animal = new Animal() //实例化一个对象

Object.create()
方法用于从原型对象生成新的实例对象,可以替代new
命令。
3.prototype 是什么?有什么特性
JavaScript的每个对象都继承另一个对象,后者称为“原型”(prototype)对象。只有null
除外,它没有自己的原型对象。
原型对象的作用,就是定义所有实例对象共享的属性和方法。这也是它被称为原型对象的含义,而实例对象可以视作从原型对象衍生出来的子对象。
通过构造函数生成实例对象时,会自动为实例对象分配原型对象。每一个构造函数都有一个prototype
属性,这个属性就是实例对象的原型对象。
Object.getPrototypeOf()
方法返回一个对象的原型。这是获取原型对象的标准方法。

特性:
1.原型对象上的所有属性和方法,都能被派生对象共享。这就是JavaScript继承机制的基本设计。
2.原型对象的属性不是实例对象自身的属性。只要修改原型对象,变动就立刻会体现在所有实例对象上。
3.当实例对象本身没有某个属性或方法的时候,它会到构造函数的prototype
属性指向的对象,去寻找该属性或方法。如果实例对象自身就有某个属性或方法,它就不会再去原型对象寻找这个属性或方法。
4:画出如下代码的原型图

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('前端');


5: 创建一个 Car 对象,拥有属性name、color、status;拥有方法run,stop,getStatus

var Car = function(name,color,status){

this.name = name
this.color = color
this.status = status

}
Car.prototype.run = function(){
console.log(this.name+'is running')

}
Car.prototype.stop = function(){
console.log(this.name+'was stopped')

}
Car.prototype.getStatus = function(){
console.log(this.status)

}
var car = new Car('audi','black','running')
car.status //running

car.getStatus() //running

6: 创建一个 GoTop 对象,当 new 一个 GotTop 对象则会在页面上创建一个回到顶部的元素,点击页面滚动到顶部。拥有以下属性和方法

var GoTop = function(ct,target){

 this.ct = ct

 this.target = target

}

GoTop.prototype.bindEvent = function(target){

 target.addEventLlistener('click',function(){

   window.scroll(0,0)

 })

}

GoTop.prototype.createNode = function(node){

 return document.createElement(node)

}

demo:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,475评论 4 372
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,744评论 2 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,101评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,732评论 0 221
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,141评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,049评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,188评论 2 320
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,965评论 0 213
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,716评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,867评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,341评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,663评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,376评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,200评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,990评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,179评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,979评论 2 279

推荐阅读更多精彩内容