当前位置:网站首页>JS 内置构造函数 扩展 prototype 继承 借用构造函数 组合式 原型式creat 寄生式 寄生组合式 call apply instanceof
JS 内置构造函数 扩展 prototype 继承 借用构造函数 组合式 原型式creat 寄生式 寄生组合式 call apply instanceof
2022-08-03 19:28:00 【HandsomeDanielWu】


prototype 只有在构造函数new()才有用。构造函数的prototype就是实例的原型。实例可以通过prototype上得到方法和属性,称为原型链查找。所以方法一般添加在prototype上,不直接添加在实例上
字面量










数组扩展方法 拓展类型的方法 prototype


内置构造函数的关系


——poto_是谷歌浏览器的特殊属性

Object是所有原型的终点,Object本身又可以看作Function new()出来的



继承











继承





解决继承问题1:借用构造函数 call apply





组合继承


组合继承

原型式继承 creat








原型式继承







寄生式继承








不同实例中,函数是不同的地址,造成资源浪费


寄生组合式




寄生

组合

不需要new 父类,相比组合式继承,减少1次构造函数调用。
<body>
<script>
//这个函数接受两个参数,subType子类的构造函数,supertype父类的构造函数
function inheritPrototype(subType, superType){
//寄生式继承
var prototype = Object.create(superType.prototype);
subType.prototype = prototype;
}
//父类
function People(name, sex, age){
this.name = name;
this.sex = sex;
this.age = age;
}
//如果方法不卸载prototype里,会导致创建出来的实例会有各自的方法函数地址,
//造成资源浪费
People.prototype.sayHello = function(){
console.log('你好,我是'+ this.name +'今年' + this.age +'岁了');
}
People.prototype.sleep = function(){
console.log(this.name + '正在睡觉');
}
//组合
//子类
function Student(name, sex, age, school, sid){
//构造函数,省去再写一遍父类属性的复制方法
//call解决子类实例的引用对象是相同内存地址问题
//this上下文,指student
People.call(this,name, sex, age);
//子类属性
this.school = school;
this.sid = sid;
}
//调用inheritPrototype函数,这个函数可以让Student类和prototype指向
//People.prototype为原型的一个新对象
inheritPrototype(Student,People);
Student.prototype.exam = function(){
console.log(this.name + '正在考试');
}
Student.prototype.sayHello = function(){
console.log(this.name + '学生 say hello');
}
var xiaoming = new Student('小明','男',12,'ABC学校',12345);
xiaoming.sayHello();
xiaoming.sleep();
xiaoming.exam();
</script>
</body> instanceof 检查是否在原型链上



边栏推荐
猜你喜欢
随机推荐
群辉查看硬盘存储占用的方式
ADS 2023 下载链接
MySQL超详细安装教程 手把手教你安装MySQL到使用MySQL 最简单的MySQL安装方式,这种方式装,卸载也简单
阿里巴巴政委体系-第七章、阿里政委培育
Brush the topic of mobile zero power button
Redis 内存满了怎么办?这样置才正确!
余弦距离介绍
「游戏建模干货」建模大师几步操作,学习经典,赶紧脑补一下吧
如何理解即时通讯开发移动网络的“弱”和“慢”
花 30 美金请 AI 画家弄了个 logo,网友:画得非常好,下次别画了!
丙二醇二乙酸酯(Propylene Glycol Diacetate)
awk语法-02-运算、数组、格式化输出
The effective square of the test (one question of the day 7/29)
When does MySQL use table locks and when to use row locks?You should know this
标准C语言学习总结11
分享即时通讯开发之WebSocket:概念、原理、易错常识、动手实践
从文本匹配到语义相关——新闻相似度计算的一般思路
告诉你0基础怎么学好游戏建模?
CC2530_ZigBee+华为云IOT:设计一套属于自己的冷链采集系统
要想成为黑客,离不开这十大基础知识





![[Notes] Introduction to machine learning](/img/69/e2acd3efd5f513c9c32fca701b66c0.png)



