现代Javascript教程 - 学习笔记05 - new

105 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第5天,点击查看活动详情

学完了对象的基础内容,还有this,今天学习new操作符!

学习链接

构造器和操作符 "new" (javascript.info)

简介

对象创建的两种方式

  • {...} - 字面量
  • new Object() - new来自这里!,注意这里的Object带了个(),这叫构造函数!

构造函数

  • 就是常规函数!
  • 约定俗成 - 大写字母开头
  • 只能由 new 来执行

new的执行过程 - 看看它干了啥!

  • 创建一个空的对象 + 分配给this - 先空,有个容器放东西,this指代它!
  • 函数体执行,会修改this,并添加新的属性 - 放东西,有的过程
  • 返回this的值 - 这里的this,就可以有函数里的属性了! -
  • 这个this如果不返回,会隐式返回

new的好处!

  • 如果每次都是用字面量 - {....} - 创建对象,就很麻烦。。
  • new的主要目的 👇

实现可重用的对象创建代码。

任何函数,除了箭头函数,都可以new! - 一个新的地址空间!

从技术上讲,任何函数(除了箭头函数,它没有自己的 this)都可以用作构造器。

如何知道是否是用new 创建出来的?

  • new.target - 该属性可以检测出来 - 未解。。。

构造函数的return

  • 上面说,没有return,自动return - 隐式
  • 如果返回的是对象,则返回值是这个对象 - 引用
  • 如果返回的是原始类型 - 忽略 - 返回this!

就是这个例子!

image.png

构造器中,放入方法!

  • 后面学class的时候,也会这样!

this也可以添加到属性中!

  • this.name = name(传入!)
  • 这样new 啥,返回啥!

image.png

总结

每天,记录一点,不紧不慢,按着节奏走!

涓滴之水终可磨损大石,不是由于它的力量强大,而是由于昼夜不舍的滴坠。