小何谈原型(上篇)

简介: 小何谈原型(上篇)

1. 为什么要用原型?



原型上所有的方法和属性都可以被构造函数共享(实际开发原型主要共享方法和所有实例公用引用属性),那为什么要共享呢?


/**
* 定义老师的信息
* @param _name    姓名
* @param _type    类型
* @param _age   年龄
*/
function teacher(_name, _type, _age) {
  this.name = _name
  this.type = _type
  this.age  = _age
  this.students = ['小何', '小罗', '小陈']    // 数组也是一种引用类型数据
  this.show = () => {
    console.log(`老师:${ this.name }, 是:${ this.type }, 年龄:${ this.age }`)
    console.log(`共同的学生有:${ this.students }`)
  }
}
// 对象也叫实例
// zs叫做对象变量,对象是等号右边通过new出来的一个实例,而且是运行期间才在堆中开辟对象的内存空间
const zs = new teacher('张三', '语文老师', 28)    // 语文老师
const ww = new teacher('王五', '数学老师', 36)    // 数学老师
zs.show()
ww.show()
复制代码


网络异常,图片无法展示
|


方法栈,运行时执行方法会入栈,方法执行结束后会出栈


网络异常,图片无法展示
|


2. 没有用原型会有什么问题?



总结问题:所有teacher对象也叫teacher实例,都有相同的学生对象,相同的学生对象用students英文表示,所有teacher对象都有相同的show方法,但我们发现每一个teacher对象,也叫teacher实例都单独分配一个students属性空间和一个show方法空间


如果不使用原型,会导致大量的空间浪费


答案: 使用原型解决所有实例上的方法,还有所有实例上的共同属性都可以放到原型上去定义

相关文章
|
6月前
|
算法 编译器 C++
【C++入门到精通】新的类功能 | 可变参数模板 C++11 [ C++入门 ]
【C++入门到精通】新的类功能 | 可变参数模板 C++11 [ C++入门 ]
61 1
|
6月前
|
存储 编译器 程序员
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针(下)
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针
25 0
|
6月前
|
存储 编译器 C语言
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针(中)
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针
31 0
|
6月前
|
Java C语言 C++
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针(上)
从C语言到C++④(第二章_类和对象_上篇)->类->封装->this指针
40 0
|
存储 编译器 C语言
【C++】类和对象(上篇)
【C++】类和对象(上篇)
59 0
|
编译器 程序员 C语言
C嘎嘎~~ [类 上篇]
C嘎嘎~~ [类 上篇]
|
前端开发
前端学习案例10-原型面试题
前端学习案例10-原型面试题
60 0
前端学习案例10-原型面试题
|
前端开发
前端学习案例11-原型面试题2
前端学习案例11-原型面试题2
64 0
前端学习案例11-原型面试题2
|
前端开发
前端学习案例9-原型面试题1
前端学习案例9-原型面试题1
78 0
前端学习案例9-原型面试题1
|
前端开发
前端学习案例-原型
前端学习案例-原型
58 0
前端学习案例-原型
下一篇
无影云桌面