面向对象的特点有哪些,面向对象的特点主要概括
面向对象的特点
封装:创建一个对象,集中保存一个事物的属性和功能
继承:父对象中的成员,子对象无需重复创建,就可直接使用
多态:同一个函数在不同情况下表现出不同的状态
封装
创建对象的方法:
{}
new Object
构造函数
为什么要使用构造函数?
用{}一次只能创建一个对象。如果想创建多个相同结构的对象时,代码就会很多重复,极其不便于将来的维护。只要想反复创建多个相同结构, 只是内容不同的对象时,都可以用构造函数。
构造函数:
描述同一类型的所有对象的统一结构的函数。
为什么要使用构造函数?
复用代码。
如何使用构造函数:
第一步:定义构造函数
function 函数名(形参1, 形参2, ...){ //将来要加入到新对象中的规定的属性 this.属性名=形参1; this. xxx = xxx; this.方法名=function(){ ... this.属性名 ... }}
第二步:使用new调用函数
var 对象名=new 函数名(实参值1, 实参值2, ...
构造函数原理:
实参传给形参,形参传给属性,属性通过this传给new出来的对象。
new做了什么?
创建一个新的空对象
让新创建的子对象继承构造函数的原型对象,设置子对象的__proto__属性指向构造函数的原型对象
调用构造函数,将构造函数中的this替换为new刚创建的新对象,并为新对象添加规定的属性和方法
返回新对象
继承
为什么要使用继承?
将方法定义放在构造函数中,每次new时都会执行function反复创建相同函数的多个副本,浪费内存。
如何实现继承?
js中继承都是通过原型对象实现的
构造函数.prototype.属性名 = 属性值构造函数.prototype.方法名 = function(){ /*...*/ }
原型对象:
构造函数中都有一个自带的属性prototype,指向自己配对的原型对象。构造函数.prototype替所有子对象集中保存了共有属性值和方法。
何时使用原型对象?
只要发现多个子对象都需要使用相同的功能和属性值时,都可将相同的功能和属性值集中定义在原型对象中。
内置类型:
ES标准中规定的,浏览器已经实现,我们可以直接使用的类型。
共12种(其中ES6之前有11种,ES6新增了一种):
ES5:String、Number、Boolean、Array、Date、RegExp、Math、Error、Function、Object、global(全局作用域对象,在浏览器中被window代替)
ES6:Symbol
原型链:
在JavaScript中,每个函数都有一个prototype属性,这个属性指向函数的原型对象。当我们访问一个对象的属性时,先在对象内部查找,如果这个对象内部不存在该属性,就会去它的原型对象里找这个属性,这个原型对象又会有自己的原型,这种逐级继承形成的链式结构称为原型链。原型链的顶端是Object.prototype,Object.prototype.__proto__为null。
console.log(Object.prototype.__proto__ === null); // true
多态
多态的表现形式:
例如:所有对象调用 toString结果竟然不一样
如何实现多态?
重写:从父对象继承来的个别成员不好用时,就可以在子对象中定义同名成员, 来覆盖父对象中的同名成员。
总结
封装:
如果只创建一个对象:{}
如果反复创建多个相同结构的对象:构造函数
继承
所有子对象共用的属性值和方法,都放在构造函数的原型对象中
多态:
重写:只要觉得从父对象继承来的成员不好用,都可以在子对象中重写同名成员
本文地址:百科问答频道 https://www.neebe.cn/wenda/886365.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!