连看4篇前辈的文章,记录一些知识点

  1. Javascript继承机制的设计思想

  2. Javascript 面向对象编程(一):封装

  3. Javascript面向对象编程(二):构造函数的继承

  4. Javascript面向对象编程(三):非构造函数的继承

1. constructor

在Javascript语言中,new命令后面跟的不是类,而是构造函数(constructor)。

创建一个叫Student的构造函数,表示学生对象的原型

function Student(name){this.name = name;}

顺便带一下js中this的用法 Javascript 的 this 用法

对这个构造函数使用new,会生成Student的实例

var st1 = new Student("lilei")
console.log(st1.name) // lilei

此时st1 会自动含有一个属性constructor,指向构造函数

console.log(st1.constructor == Student) //true

用构造函数生成实例对象(使用new),有一个缺点,那就是无法共享属性和方法

比如说有同学韩梅梅和同学李雷,他们共同在太阳班

function Student(name){this.name = name;this.class = "sun";
}
var st1 = new Student("lilei")
var st2 = new Student("hanmeimei")

输出二人的班级

console.log(st1.class)//sun
console.log(st2.class)//sun

班级改名,修改李雷的班级为月亮班
韩梅梅的班级名称没有发生变化,依然是sun(太阳班)

st1.class = "moon"
console.log(st1.class) //moon
console.log(st2.class) //sun

所以,构造函数中的共有属性无法做到数据共享,要做到数据共享,需要用到prototype

2. prototype

构造函数设置有prototype属性,属性中包含一个对象,需要共享的属性和方法,放在prototype对象里
。不需要共享的属性和方法,放在构造函数里

将上述例子改写

function Student(name){this.name = name;
}
Student.prototype = {class : "sun"}var st1 = new Student("lilei")
var st2 = new Student("hanmeimei")st1.prototype.class = "moon"
console.log(st1.class) //moon
console.log(st2.class) //moon

每一个实例都有一个constructor属性,默认调用prototype的constructor属性

st1.constructor  = st1.prototype.constructor

总结:
constructor储存不需要共享的属性和方法,而prototype对象储存需要共享的属性和方法

转载于:https://www.cnblogs.com/gggggggxin/p/10070496.html

js中prototype,constructor的理解相关推荐

  1. 关于JS中的constructor与prototype

    在学习JS的面向对象过程中,一直对constructor与prototype感到很迷惑,看了一些博客与书籍,觉得自己弄明白了,现在记录如下: 我们都知道,在JS中有一个function的东西.一般人们 ...

  2. 【推荐】关于JS中的constructor与prototype【转】

    最初对js中 object.constructor 的认识: 在学习JS的面向对象过程中,一直对constructor与prototype感到很迷惑,看了一些博客与书籍,觉得自己弄明白了,现在记录如下 ...

  3. javascript --- js中prototype、__proto__、[[Propto]]、constructor的关系

    首先看下面一行代码: function Person(name){this.name = name; } var person1 = new Person; console.log(person1._ ...

  4. JS中Prototype属性解释及常用方法

    1.prototype的定义 javascript中的每个类都有prototype属性,其prototype属性的解释是:返回对象类型原型的引用.每一个构造函数都有一个属性叫做原型.这个属性非常有用: ...

  5. js中prototype用法(转)

    JavaScript能够实现的面向对象的特征有: ·公有属性(public field) ·公有方法(public Method) ·私有属性(private field) ·私有方法(private ...

  6. Js中函数式编程的理解

    函数式编程的理解 函数式编程是一种编程范式,可以理解为是利用函数把运算过程封装起来,通过组合各种函数来计算结果.函数式编程与命令式编程最大的不同其实在于,函数式编程关心数据的映射,命令式编程关心解决问 ...

  7. JS中prototype、__proto__以及原型链

    1.对象的三角恋关系 1.每个"构造函数"中都有一个默认的属性, 叫做prototype prototype属性保存着一个对象, 这个 对象 称之为"原型对象" ...

  8. Js中匿名函数的理解

    目录 1.js中匿名函数的N种写法 最常见的用法: 2.JavaScript 匿名函数及闭包 2.1 匿名函数 2.1.1 函数的定义 2.1.2 匿名函数的创建 2.2 闭包 2.3 举例 2.4 ...

  9. JS中prototype的理解

    1,JS是基于对象的语言,构造函数本身就是一个对象,当调用new关键字时,会创建一个新对象.2,prototype是对象的一个属性,其可以是一个基本类型,如数字.字符串等,也可以是一个引用类型. 3, ...

最新文章

  1. 删除json中的指定元素_DeleteFile,VBA中借助Windows Scripting Host删除指定文件
  2. struts2文件上传(2)
  3. matlab光学毕业论文,光学信息处理实验的Matlab仿真.doc
  4. 几个问题,比较急,知道的大侠,帮帮忙
  5. 荣耀鸿蒙os2.0公测版,鸿蒙OS 2.0他来了!华为HarmonyOS 2.0开发者公测版正式推送
  6. 构建最小JDK Docker镜像 或者直接使用镜像:frolvlad/alpine-oraclejre8:slim
  7. 6、vueJs基础知识06
  8. 00110_Class类
  9. 自动驾驶7-2 最终项目概述 Final Project Overview
  10. s7-200与计算机modbus通讯案例,S7-200实现Modbus通信范例(绝对精华)
  11. el-table点击单元格自动聚焦可编辑,且失去焦点即修改成功的实现方法
  12. 关于Windows的window
  13. 关于移动端适配,你必须要知道的
  14. Storyboard 之segue用法总结
  15. Cesium中文教程-空间数据可视化Visualizing Spatial Data(二)
  16. 咸鱼Micropython—LED用法
  17. 2023年软考高级信息系统项目管理师报名,这里靠谱
  18. MFC 创建模态与非模态对话框
  19. 我们研究了853场世界杯比赛,发现了这几条稳赔不赚的竞猜攻略
  20. 机器学习练习 2 - 逻辑回归

热门文章

  1. $python日期和时间的处理
  2. 11月8日PHP练习《留言板》
  3. jquery颜色选择器
  4. 【XMPP】XMPP协议之原理篇
  5. 避免内存泄漏 - C++快速入门38
  6. MySQL_(Java)分页查询MySQL中的数据
  7. 洛谷 P3320: bzoj 3991: LOJ 2182: [SDOI2015]寻宝游戏
  8. Python3中的bytes和str类型
  9. 数据结构Java版之查找算法(三)
  10. 多对多的添加修改,显示,的逻辑步骤