JavaScript中 prototype 原型继承
Posted UI前端小菜一名
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript中 prototype 原型继承相关的知识,希望对你有一定的参考价值。
原型继承
说到原型继承,那就是要从原型入手,就让我们来简单回顾一下什么是原型吧
原型概述:每个函数身上都有一个原型,我们称之为原型对象
函数的 prototype 属性指向原型对象,原型对象上的 constructor 指回构造函数
那么顾名思义,原型继承那就要从原型下手啦 ! !
function Person() {
this.uname = '张三',
this.age = 22
}
// 原型对象
Person.prototype.sex = '男'
Person.prototype.head = 1
Person.prototype.sayName = function () {
console.log('hello javascript')
}
function Son() {
this.eye = 2
}
// 把构造函数 Person 的实例化对象赋值给构造函数 Son 的原型对象,那么在构造函数 Person 原型上添加的属性或者方法, Son的实例对象也是可以访问到的,这正是原型链起到的作用
Son.prototype = new Person()
// 实例化对象
let per = new Son()
console.log(per)
// 可以访问原型对象上添加的属性
per.sayName()
sayName 方法定义在了构造函数 Person 的原型上,而通过构造函数 Son 的实例对象却能够访问得到,那么 sayName 方法相当于定义在了 Son 原型对象的原型对象上,之所以 Son 的实例化对象能够访问得到,那正是原型链的功劳
通过 per.sayName()
可以在控制台看到打印结果 'hello javascript'
上面代码运行,打印 Son 的实例化对象 per ,可以看到如下图, 正是 (Son.prototype = new Person()
) 让 Son 的原型对象变成了构造函数 Person 的实例对象 new Person()
, 而且 Person 的原型对象上也有我们自己定义的属性方法, 并且它的 constructor 指回 构造函数 Person
喜欢的小伙伴,点个赞再走呗 !!
以上是关于JavaScript中 prototype 原型继承的主要内容,如果未能解决你的问题,请参考以下文章
javascript中原型链的结尾是啥——null或Object.prototype?