面相对象(一)

原创 小Q 随笔 面试 91阅读 2018-09-07 11:28:56 举报

三大特征

封装性:

把客观存在的一个东西抽象成一个类,里面的什么方法都有了,我们可以直接引用

继承性
多态性

(根据参数不同,作出不同反馈)

函数()与New 函数()

1.new执行的函数默认生成了一个对象
2.函数内部this默认指向了这个new生成的对象
3.new执行的函数生成的这个对象,是函数的默认返回值

类/构造函数的prototype里的就是共有方法
prototype也就是类原型就是共有属性的方法

构造函数被new执行的过程叫做构造函数的实例化
Const p1=new Person();
p1叫做类person的实例
如果实例是私有属性,就放在类里面,如果是共有属性就放在类的原型上面

原型和原型链

原型本质就是一个 json 格式的对象
而对象是被这个对象对应的类实例出来的,那么原型也是个对象
而原型这个对象也是被原型这个对象对应得类实例出来的
Js里是基于原型的

最大的是obj底下有number string array boolean等等还有symbol等

原型链:

每一层原型形成嵌套的关系形成像铁链一样的
私有属性的继承是模仿一个相似的
而原型的继承是同一个
实例的 proto 指向了这个实例对应的类的prototype
For in 遍历性能差,因为它会查找原型,直到找出为止实例.proto===构造函数.prototype

判断一个属性是否是私有属性

hasOwnProperty

Obj.hasOwnProperty(‘name’)

如果name是私有属性就返回true如果不是就返回false
意思就是有自己的属性,即私有属性,不是原型上的

Es6的面向对象写法,与es5的区别

Class 在es6之前是保留字,在es6里升级成了关键字(用于定义类)

Class用法

和let const 一样,不存在变量提升,不允许重复声明

除了constructor 里的,其余都是共有方法,并且只能定义方法,不能定义

类的继承

假设父类如下

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复