前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅习一波JavaScript高级程序设计(第4版)p5

浅习一波JavaScript高级程序设计(第4版)p5

作者头像
掘金安东尼
发布2022-09-19 10:43:45
1790
发布2022-09-19 10:43:45
举报
文章被收录于专栏:掘金安东尼

theme: smartblue

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情


JavaScript 高级程序设计第 4 版(后简称高程4),相较于第 3 版,增加了 ES6 至 ES10 的全新内容,删除了旧版过时的内容,并在原有基础上充实了更加翔实的内容。

中文译版于 2020 年发售,妥妥的“新鲜出炉”,你要是问本瓜:当今学 JavaScript 哪家强,我只能说:红宝书第 4 版最在行。

于是乎,借着更文契机,本瓜将开启一个小系列,带你重看一遍高级程序设计4(先前只是跳着跳着看),将抽取精华,用最简单的话解释核心点、尽量把握全局、快速过一遍的同时,记录与工友们分享~~

正文

第五章 —— 基本引用类型, 这是本瓜最不理解的 JavaScript 语法设定之一!

为什么已经有了::Boolean、Number 和 String 基本类型,还要来一个::Boolean、Number 和 String 原始值包装类型??

代码语言:javascript
复制
let s1 = "some text";
s1.color = "red";
console.log(s1.color); // undefined

let s1 = new String("some text");
s1.color = "red";
console.log(s1.color); // red

神不神奇?

这样做的目的就是:让原始值拥有对象的行为。。。

代码语言:javascript
复制
let falseValue = false
result = falseValue && true
console.log(result) // false

let falseObject = new Boolean(false);
console.log(falseObject) // Boolean {false}
console.log(falseObject&&true) // true

所以,一切通过 new 关键字创建的,都是对象!!

对象被认为是某个特定引用类型的实例。新对象通过使用 new 操作符后跟一个构造函数(constructor)来创建。构造函数就是用来创建新对象的函数;

上面的 String()、Boolean() 都是构造函数,都是用来构造引用类型的对象的!!

以下代码可以充分说明以上观点:

代码语言:javascript
复制
let s1 = new String("some text")
console.log(s1.__proto__===String.prototype) //true
代码语言:javascript
复制
let s1 = new String("some text")
let s2 = s1
s1.color='red'
console.log(s2) // String {'some text', color: 'red'}

let s1 = "txt"
let s2 = s1
s1='red'
console.log(s2) // txt

书归正传,Date()、RegExp() 自带的引用类型构造函数就不多说了,有机会专题写写;


5.4 讲到:单例内置对象:Global、Math

具体使用,就不展开了;

需要强调的是:当代码开始执行时,全局上下文中会存在两个内置对象:Global 和 Math。其中,Global 对象在大多数 ECMAScript 实现中无法直接访问。不过,浏览器将其实现为 window 对象。所有全局变量函数都是 Global 对象的属性。Math 对象包含辅助完成复杂计算的属性和方法。

小结

此一章,最有意思的,还是对于:原始值包装类型 的理解;

JavaScript 可以实现面向对象编程,但是它实际上是没有“类”的,我们通过构造函数来实力对象,其实是变相在实现“类”的继承能力;至于具体的实现,包括原型链这些,后面再聊。

OK,以上便是本篇分享。 觉得不错点个赞吧👍👍👍,您的鼓励,我的动力,坚持原创质量好文~~ 欢迎评论留言 我是掘金安东尼,输出暴露输入,技术洞见生活。再会吧~~ 👋👋👋

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • theme: smartblue
    • 正文
      • 小结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档