「原型链」祖师爷什么是原型链呀?


「原型链」祖师爷什么是原型链呀?

祖师爷告诉你什么是原型链


​每个门派都有一个祖师爷。学徒在山上学艺,学成下山后谨记师门教导,施展一身武艺。恰逢一日对敌,面对敌人的怪异武功,师门好像未曾教过破解之法,便高喊一声祖师爷救我,刹那间一道白光降于头顶,祖师爷灵魂附体,一套精绝凌厉的拳法杀得敌人措手不及。但敌人也极是难缠,恐怕非要那门传说中从天而降的掌法才能制敌。你心中暗自着急,催促着祖师爷赶快发招,这时只听身内传来了祖师的声音:“MD这破掌法当年偷懒没学,我去把我师祖也叫来问问...”

每个门派(FunctionX)都有一个祖师爷(prototype)。学徒(object)在山上学艺(= new FunctionX),学成下山后谨记师门教导,施展一身武艺(

object.xxx)。恰逢一日对敌,面对敌人的怪异武功,师门好像未曾教过破解之法(object对象没有yyy方法),便高喊一声祖师爷救我,刹那间一道白光降于头顶,祖师爷(__proto__)灵魂附体,一套精绝凌厉的拳法杀得敌人措手不及(继续寻找原型中是否有yyy方法)。但敌人也极是难缠,恐怕非要那门传说中从天而降的掌法才能制敌。你心中暗自着急,催促着祖师爷赶快发招,这时只听身内传来了祖师的声音:“MD这破掌法当年偷懒没学,我去把我师祖也叫来问问...”(如果原型中没有yyy方法,则继续查找原型的原型,是谓原型链)


面向对象的三大特征

  • 继承
  • 多态
  • 封装

完美实现原型继承的方案

借助寄生组合继承

<code>function Person(obj) {    this.name = obj.name    this.age = obj.age}Person.prototype.add = function(value){    console.log(value)}var p1 = new Person({name:"番茄", age: 18})function Person1(obj) {    Person.call(this, obj)    this.sex = obj.sex}Person1.prototype = Object.create(Person.prototype)Person1.prototype.play = function(value){    console.log(value)}var p2 = new Person1({name:"鸡蛋", age: 118, sex: "男"})/<code>

通过此方式实现原型的继承,子类原型扩展不会影响父类原型,子类的原型上也不会出现了父类的属性

❤️ 看完帮个忙

如果你觉得这篇内容对你挺有启发,我想邀请你帮我个小忙:

点赞/关注/收藏,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-)


分享到:


相關文章: