目录
一:什么是原型继承
二:通过赋值方式实现原型继承
三:通过构造函数实现原型继承
四:如何赚钱
一:什么是原型继承
通过往构造函数上的原型对象添加属性和方法,再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元/天,欢迎加入专属于创业者的交流集中地,创业、认知提升找微木!