0
点赞
收藏
分享

微信扫一扫

Vue 3 的 setup 函数使用及避坑指南

目录

一:什么是原型继承

二:通过赋值方式实现原型继承

三:通过构造函数实现原型继承

四:如何赚钱


一:什么是原型继承

通过往构造函数上的原型对象添加属性和方法,再new一个实例对象,从而实例对象身上具有原型对象上的属性和方法

//抽取 公共部分 放到原型上
const Person = {
      eyes: 2,
      head: 1
    }
//女人
function Woman(){}

//男人
    function Man() {}
//Man通过 原型继承 Person
    Man.prototype = Person
//经赋值会覆盖原型,要重新指向构造函数Man
    Man.prototype.constructor = Man
    const M = new Man()
    console.log(yellow);

二:通过赋值方式实现原型继承

显然通过赋值方式添加给原型对象,实现了M的继承问题。但存在致命问题,看下面代码

const Person = {
      eyes: 2,
      head: 1
    }
    function Man() { }
    //Man通过原型来继承Person
    Man.prototype = Person
    //经赋值会覆盖原型,要重新指向构造函数Man
    Man.prototype.constructor = Man
    const M = new Man()
    function Woman() { }
    Woman.prototype = Person
    //给Woman添加一个公共的方法
    Woman.prototype.baby = function () {
      console.log('会生孩子');
    }
    const W = new Woman()
    //此时再打印Woman和Man
    console.log(M);
    console.log(W);

给Woman原型对象添加了baby方法,但是Man原型对象中也出现了baby方法。关键原因就是利用“原型继承”Person时使用了赋值方式,因为Person是引用数据类型,所以赋值是复制的地址但Woman、Man地址都是指向同一个,修了Woman原型对象本质上就是修改了Man的原型对象。

改善看三

三:通过构造函数实现原型继承

    function Person() {
      this.eyes = 2
      this.head = 1
    }
    function Man() { }
    Man.prototype = new Person()
    Man.prototype.constructor = Man
    const M = new Man()
    function Woman() { }
    Woman.prototype = new Person()
    Woman.prototype.baby = function () {
      console.log('会生孩子');
    }
    const W = new Woman()
    //此时再打印Woman和Man
    console.log(M);
    console.log(W);

通过构造函数方式就可以避免上述问题,因为通过new创建的实例对象,是结构相同,但指向不同。因此就可以实现给Woman添加而不影响到Man


四:如何赚钱

现在是否厌倦了程序员朝九晚五的生活,想给自己生活寻找另一条路径;在校大学生是否愿意在校进行人生中的第一次创业,获取人生第一桶金;是否正在看此篇文章的你愿意通过五年努力,让自己开上梦想的中的车子;

那就从提升认知开始,加入微木的知识星球:微木的创业思考

专属于创业者的交流集中地,创业、认知提升找微木!

1 创业底层方法论

2 从千万本书书籍中挑选出的,人生必读书目清单。

3 认知提升学习资源(秘密)

4 寻找赚钱项目底层方法论

5 好书精华提炼

6 深度链接微木

每天仅需0.3元/天,欢迎加入专属于创业者的交流集中地,创业、认知提升找微木!

举报

相关推荐

0 条评论