我的思路
1.首先创建一个Person,有name和age两个属性,还有一个skill()方=>(ok)
2.创建两个类Student继承Person,Teacher继承Person=>(ok)
3.Student有额外的属性nickName,有额外的方法playBasketball,打篮球=>(ok)
4.Teacher有额外的属性rank(rank是等级,资历的意思),有额外的方法deepStudy,深入研究=>(ok)
5.我们要解决:
1.证明每一个函数都有prototype(翻译为原型或者雏形)属性=>确实,但是对象里面的函数除外(ok)
2.构造函数有prototype吗?=>有
3.普通方法有prototype吗?=>对象里面的方法没有prototype,而构造方法和写在script标签里面的普通方法都有prototype属性
4.prototype是对象吗?=>是对象
5.prototype可以继承吗=>可以
6.所有对象(例如Student的实例student)都有__proto__属性=>确实
7.student.__proto__ 就等于(也可说 指向) Person.prototype=>不对,student.__proto__等于Student.prototype
8.Person.prototype是一个对象,对象就会有__proto__ =>确实
9.Person.prototype.__proto__ 就等于(也可说 指向) Object.prototype =>确实
10.Object.prototype是一个对象,然后对象就会有__proto__属性 =>确实
11.Object.prototype.__proto__ 就等于 null =>确实
1.首先创建一个Person,有name和age两个属性,还有一个skill()方法
class Person {
constructor(name, age) {
this.name = name
this.age = age
}
skill(skillType) {
console.log(this.name+"会"+skillType)
}
}
2.创建两个类Student继承Person,Teacher继承Person
class Student extends Person{
constructor(name,age,nickName){
super(name,age) //调用父类构造方法
this.nickName = nickName
}
playBasketball(){
console.log(this.name+"打篮球两年半了")
}
}
class Teacher extends Person{
constructor(name,age,rank){
super(name,age)
this.rank = rank
}
deepStudy(){
console.log(this.name+"总结了这些题目的规律")
}
}
3.Student有额外的属性nickName,有额外的方法playBasketball
4.Teacher有额外的属性rank(rank是等级,资历的意思),有额外的方法deepStudy,深入研究
5.我们要解决:
1.证明每一个函数都有prototype(翻译为原型或者雏形)属性
确实,但是对象里面的函数除外
let student = new Student("何同学",22,"小何")
2.构造函数有prototype吗?
有(如上)
3.普通方法有prototype吗?
对象里面的方法没有prototype,而构造方法和写在script标签里面的普通方法都有prototype属性
let sayFunc = function say(){
console.log("Hello World!")
}
4.prototype是对象吗?
是对象
5.prototype可以继承吗
可以
6.所有对象(例如Student的实例student)都有__proto__属性
确实
7.student.proto 就等于(也可说 指向) Person.prototype
不对,student.__proto__等于Student.prototype
8.Person.prototype是一个对象,对象就会有__proto__
确实
9.Person.prototype.proto 就等于(也可说 指向) Object.prototype
确实
10.Object.prototype是一个对象,然后对象就会有__proto__属性
确实
11.Object.prototype.proto 就等于 null
确实