原型链 面向对象 继承笔记

2019-04-18  本文已影响0人  刘松阳

一、不会的****问题****如何回答

1.找同类 例如:ajax 2.确认是否听清,你可以让对方再说一下没准面试官说的术语不是你平时说的那个 3.如果真的不会,应该反问一下(注意:反问技巧)

二、会的****问题****如何回答

要点:

1.是什么?

2.适用场景

3.优缺点

4.代码如何实现

5.还有没有更好的解决方案来取代? let

三、原型****链

实例,构造函数(controcutor) 原型(prototype) proto[图片上传失败...(image-aaafc6-1555557227546)]

[图片上传失败...(image-fc9ac9-1555557227549)]

四、****JS****继****承

面向对象是什么:万物皆对象

对象包括:属性和方法

创建对象的方式:对象字面量和构造函数方式

面向对象的三大特性:封装,继承,多态

继承才开始登场:???

1.ES5继承: prototype

继承方式:

(1)原型链继承:继承父类原型的方法

(2)借用构造函数继承:在子类中用call或apply继承父类实例属性

(3)组合继承

代码实现:

//创建两个类A和B,B如何继承A

function A(name,age) {

this.name=name ||'无名';

 this.age=age || 0

}

A.prototype.getName=function() {

console.log(`获取的姓名为:${this.name}`)

}

var a1=new A('王崇吉');

a1.getName()

function B(name,age) {

//this.name=name ||'ming'

//借用构造函数继承

A.call(this,name,age)

this.address="北京"

}

//原型链继承

B.prototype=new A()

var b1=new B('张思睿');

b1.getName();

ES6继承: extends

代码实现:

//创建两个类A和B,B如何继承A

class A {

constructor(name,age) {

 this.name=name ||'无名';

 this.age=age || 0

 }

getName() {

 console.log(`获取的姓名为:${this.name}`)

}

}

var a1=new A('王崇吉');

a1.getName()

class B extends A {

 constructor(name,age) {

     super(name,age)  //指父类

 }

}

var b1=new B('张思睿222');

b1.getName();

��

上一篇 下一篇

猜你喜欢

热点阅读