首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

扩充基本类型(来自JavaScript:好的部分)-为什么返回'this‘的值?

扩充基本类型是指在JavaScript中,可以通过给基本类型的原型对象添加新的属性和方法来扩展其功能。当返回'this'的值时,意味着返回当前对象的引用。

在JavaScript中,基本类型包括字符串、数字、布尔值、null和undefined。这些基本类型是不可变的,即无法直接给它们添加新的属性或方法。但是,通过扩充基本类型的原型对象,我们可以间接地为基本类型添加新的功能。

为什么要返回'this'的值呢?这是因为在链式调用中,我们希望能够连续地调用多个方法,而不需要每次调用都重新获取对象的引用。通过返回'this'的值,我们可以在一个方法调用后继续调用下一个方法,而不需要额外的代码来获取对象的引用。

下面是一个示例,展示了如何通过扩充基本类型的原型对象来实现链式调用:

代码语言:txt
复制
String.prototype.repeat = function(n) {
  return Array(n + 1).join(this);
};

String.prototype.capitalize = function() {
  return this.charAt(0).toUpperCase() + this.slice(1);
};

var str = 'hello';
var result = str.repeat(3).capitalize();
console.log(result); // 输出:HelloHelloHello

在上面的示例中,我们通过给String类型的原型对象添加了repeat和capitalize方法。repeat方法用于重复字符串,capitalize方法用于将字符串的首字母大写。通过链式调用,我们可以连续地调用这两个方法,而不需要每次都重新获取字符串的引用。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 云函数(Serverless):https://cloud.tencent.com/product/scf
  • 云数据库 MongoDB 版:https://cloud.tencent.com/product/cynosdb-for-mongodb
  • 云存储 COS:https://cloud.tencent.com/product/cos
  • 人工智能平台 AI Lab:https://cloud.tencent.com/product/ai
  • 物联网平台 IoT Explorer:https://cloud.tencent.com/product/iothub
  • 移动开发平台 MTA:https://cloud.tencent.com/product/mta
  • 区块链服务 BaaS:https://cloud.tencent.com/product/baas
  • 腾讯云元宇宙:https://cloud.tencent.com/solution/virtual-universe
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JS和TS中void

预计阅读时间:5 分钟 作者:@ddprrt 翻译:疯狂技术宅 来源:fettblog 如果你来自传统类型语言,可能会很熟悉 void 概念:一种类型,告诉你函数和方法在调用时不返回任何内容。...void 作为运算符存在于 JavaScript 中,而作为基本类型存在于 TypeScript 中。在这两个世界中,void 工作机制与大多数人习惯有点不同。...let i = void 2; // i === undefined 我们为什么需要这样东西?首先在早期,人们能够覆盖 undefined 并给它一个实际。...JavaScript函数总是返回一些东西。...undefined,而 void 总是在 JavaScript返回 undefined,TypeScript 中void 是一个正确类型,告诉开发人员这个函数返回 undefined: declare

6.2K10

JavaScript 模式》读书笔记(3)— 字面量和构造函数3

大家,又见面了,我是你们朋友全栈君。   这是字面量和构造函数最后一篇内容,其中包括了JSON、正则表达式字面量,基本类型包装器等知识点。也是十分重要哦。...最后要说明是,调用RegExp()时不使用new行为与使用new行为时相同。 七、基本类型包装器 JavaScript有五个基本类型:数字、字符串、布尔、null和undefined。...与基本类型相比较而言,这些包装对象方法用起来十分方便,这也是用这种方法创建对象一个很好理由。但是这些方法在基本类型上也能够起作用。...只要调用这些方法,基本类型就可以在后台被临时转换为一个对象,并且表现犹如一个对象。...这是由于基本类型并不是对象,他们不可能扩充属性。

51640

JavaScript概要

大家,又见面了,我是全栈君 当用户填写表单在线,用户输入表单经常要推测在页面上,它提示用户填写正确邮箱、哪些项目不填之类,这些都是JavaScript特点。  ...JavaScript是Netscape公司当时为了扩充Netscape Navigator浏览器功能而开发一种能够嵌入Web主页中编程语言。它前身叫做Livescript。...JavaScript脚本语言同其他语言一样,有它自身基本数据类型、表达式和算术运算符以及程序基本框架结构。...String类型和数值类型是我们经常使用两种类型,这里就不多说了,以下重点说一下剩下4种不经常使用类型: Boolean:boolean有两个true和false。...Undefined:一个为undefined就是指在变量被创建后。但未给该变量赋值时具有的。 Null:null指没有不论什么。 Object:物。

26310

JavaScript 模式》读书笔记(3)— 字面量和构造函数3

这是字面量和构造函数最后一篇内容,其中包括了JSON、正则表达式字面量,基本类型包装器等知识点。也是十分重要哦。 五、JSON JSON是指JavaScript对象表示以及数据传输格式。...最后要说明是,调用RegExp()时不使用new行为与使用new行为时相同。 七、基本类型包装器 JavaScript有五个基本类型:数字、字符串、布尔、null和undefined。...与基本类型相比较而言,这些包装对象方法用起来十分方便,这也是用这种方法创建对象一个很好理由。但是这些方法在基本类型上也能够起作用。...只要调用这些方法,基本类型就可以在后台被临时转换为一个对象,并且表现犹如一个对象。...这是由于基本类型并不是对象,他们不可能扩充属性。

60620

JavaScript 语言精粹笔记2-继承、数组、正则表达式

有选择定义私有变量和方法。 给这个新对象扩充方法。 返回那个新对象。...也可以参考上一篇文章,JavaScript 语言精粹笔记1-语法、对象、函数 之模块部分。 部件 这一部分不是特别懂,我想等我学完ES2015中类和模块部分后再看看吧。...数组 数组字面量 一个数组字面量是在一对方括号中包围零个或多个用逗号分隔表达式。 再大多数语言中,一个数组多有元素都要求是相同类型JavaScript 允许数组包含任意混合类型。...数组是对象,因此Array.prototype也是可扩充。 指定初始 JavaScript 数组不会预制。...,详情见: 百度Web前端技术学院(2)-JavaScript 基础 之正则表达式部分1 百度Web前端技术学院(2)-JavaScript 基础 之正则表达式部分2 浅谈正则表达式中分组和引用

25010

js数据类型很简单,却也不简单

为什么说Symbol是原始类型,而不是对象类型呢?因为我们知道,大部分程序员都是没有对象,那么要想找到女朋友,最快办法就是new一个。...const options = { '性格': '', '颜': '高', '对我': '' } const gf = new GirlFriend(options) //...否则,如果对象有toString()方法且返回一个原始javascript将这个原始转换为数字,作为转换结果。 否则,javascript将抛出一个类型错误异常。...如果其中一个运算符是对象,则会遵循对象到原始转换规则,对于非日期对象来说,对象到原始转换基本上是对象到数字转换,所以首先调用valueOf(),然而大部分对象valueOf()返回都是对象本身...最后 数据类型javascript中非常重要部分,搞清楚数据类型基本知识点,对于学习javascript后续知识点多有裨益。

1.3K30

一文解决现代编程语言选择困难:命令式编程

一个类型系统,不用明确地标出函数签名(function signature),也能支持对大部分类型推断。不幸是,大多数编程语言提供仅是基本类型推断功能。...近四十年来,这一设计导致了不计其数错误、漏洞和系统崩溃,可能造成了数十亿美元痛心损失。 — 空引用创立者 Tony Hoare 为什么说空引用是不好?因为空引用破坏了类型系统。...更糟是,它并不能确保我们是否检查了空编程语言,应在编译时做类型检查,判断存在与否。 因此,支持空检查机制编程语言应加分。 错误处理 捕获异常并不是一种错误处理方式。...尽管比 Go 更复杂,但 Rust 提供了强大类型系统。Rust 提供了现代替换和错误处理方法。 为什么本文将 Rust 排在 TypeScript 和 JavaScript 之后?...大部分并不符合 Go 返回带外(out-of-band,OOB)错误自身哲学。例如,有的库对索引返回 -1 ,而非 (int, error)。

1.2K30

javascript】详解变量,类型和宿主对象

心里有点小开心 ( ̄▽ ̄)” , 回到主题,我们今天要讲的是—— JS数据类型 JS类型分类 讲到类型, 首先要说的当然是JS类型分类, 对于这一点,《javascript高级语言程序设计...》和《你不知道javasvript》阐述是有差异(但想表达意思是相同) 我更倾向于前一本书(红宝书)定义: javascript数据类型可分为两种: 基本类型和引用类型基本类型: String...——封装类型 【注意】在《javascript高级语言程序设计》中叫做“基本包装类型”, 在《你不知道javascript》中叫做“封装类型”, 实际上是同一个意思, 本文主要以后者为名 javascript...是的, 它们基本类型性质决定了它们和对象有本质不同 但它们“背后”仍有股“来自对象” 神秘力量作用着… (此处播放《走进科学》栏目让人毛骨悚然背景音乐…) 有一天彭先生突然想起 var str...(我说是朋友交易哦) 为了能够自由灵活地操作 Boolean, Number 和String这三个非常常用 基本类型(也就是有大量调用方法做处理需求) 在访问这三个基本类型时候, javascript

1.1K10

12种不宜使用Javascript语法

所以,Douglas Crockford决定,他要告诉大家,Javascript中哪些部分是精粹,哪些部分是糟粕和鸡肋。 这个想法非常,但是我不得不说,这本书写得不够好,不适合新手阅读。...全世界似乎只有他一个人使用这种比Javascript更难看懂图。3)该书基本上是一本简化Javascript语法手册,缺乏足够新内容。.... == Javascript有两组相等运算符,一组是==和!=,另一组是===和!==。前者只比较相等,后者除了以外,还比较类型是否相同。 请尽量不要使用前一组,永远只使用===和!==。...++和-- 递增运算符++和递减运算符--,直接来自C语言,表面上可以让代码变得很紧凑,但是实际上会让代码看上去更复杂和更晦涩。因此为了代码整洁性和易读性,不用为。 8....基本数据类型包装对象 Javascript基本数据类型包括字符串、数字、布尔,它们都有对应包装对象String、Number和Boolean。

64791

javascript】详解变量,类型和宿主对象

) 我更倾向于前一本书(红宝书)定义: javascript数据类型可分为两种: 基本类型和引用类型基本类型: String, Number, Boolean, Null, undefined...——封装类型 【注意】在《javascript高级语言程序设计》中叫做“基本包装类型”, 在《你不知道javascript》中叫做“封装类型”, 实际上是同一个意思, 本文主要以后者为名 javascript...是的, 它们基本类型性质决定了它们和对象有本质不同 但它们“背后”仍有股“来自对象” 神秘力量作用着... (此处播放《走进科学》栏目让人毛骨悚然背景音乐...)...(我说是朋友交易哦) 为了能够自由灵活地操作 Boolean, Number 和String这三个非常常用 基本类型(也就是有大量调用方法做处理需求) 在访问这三个基本类型时候, javascript...只有访问一个保存了基本类型变量才会创建“封装类型对象”! 对于“直接”是不会创建封装类型对象 例如: console.log(1.toString()); // 报错!!

1.7K60

【干货】PHP7强悍性能背后,zval变化!

在64位环境下,现在只需要16个字节(2个指针size), 它主要分为俩个部分, value和扩充字段, 而扩充字段又分为u1和u2俩个部分, 其中u1是type info, u2是各种辅助字段....从PHP7开始, 对于在zvalvalue字段中能保存下, 就不再对他们进行引用计数了, 而是在拷贝时候直接赋值, 这样就省掉了大量引用计数相关操作, 这部分类型有: IS_LONG IS_DOUBLE..., 为什么不把type类型放到zval类型前面, 因为我们知道当我们去用一个zval时候, 首先第一点肯定是先去获取它类型....然而大部分zval, 尤其是扩展函数内zval, 我们想想它接受参数来自外部zval, 它把返回返回给return_value, 这个也是来自外部zval, 而中间变量zval完全可以采用栈上分配...也就是说大部分内部函数都不需要在堆上分配内存, 它需要zval都可以来自外部. 于是当时我们做了一个大胆想法, 所有的zval都不需要单独申请.

65710

【鸟哥】PHP7强悍性能背后,zval变化!

在64位环境下,现在只需要16个字节(2个指针size), 它主要分为俩个部分, value和扩充字段, 而扩充字段又分为u1和u2俩个部分, 其中u1是type info, u2是各种辅助字段....从PHP7开始, 对于在zvalvalue字段中能保存下, 就不再对他们进行引用计数了, 而是在拷贝时候直接赋值, 这样就省掉了大量引用计数相关操作, 这部分类型有: IS_LONG IS_DOUBLE..., 为什么不把type类型放到zval类型前面, 因为我们知道当我们去用一个zval时候, 首先第一点肯定是先去获取它类型....然而大部分zval, 尤其是扩展函数内zval, 我们想想它接受参数来自外部zval, 它把返回返回给return_value, 这个也是来自外部zval, 而中间变量zval完全可以采用栈上分配...也就是说大部分内部函数都不需要在堆上分配内存, 它需要zval都可以来自外部. 于是当时我们做了一个大胆想法, 所有的zval都不需要单独申请.

71520

Web前端面试题目及答案汇总

当浏览器解析到该元素时,会暂停其他资源下载和处理,直到将该资源加载、编译、执行完毕,图片和框架等元素也如此,类似于将所指向资源嵌入当前标签内。这也是为什么将js脚本放在底部而不是头部。...当有消息返回时系统会通知进程进行处理,这样可以提高执行效率。 7、px和em区别 px和em都是长度单位,区别是,px是固定,指定是多少就是多少,计算比较容易。...渐进增强则是从一个非常基础,能够起作用版本开始,并不断扩充,以适应未来环境需要 c....:Blink(基于webkit,Google与Opera Software共同开发) JavaScript部分 1、怎样添加、移除、移动、复制、创建和查找节点?...2、实现一个函数clone,可以对JavaScript5种主要数据类型(包括Number、String、Object、Array、Boolean)进行复制。 ? ?

5.6K20

TypeScript系列教程七《接口》

TS中接口(interface) ---- TypeScript核心原则之一是对所具有的结构进行类型检查。 它有时被称做“鸭式辨型法”或“结构性子类型化”。...除了描述带有属性普通对象外,接口也可以描述函数类型。 为了使用接口表示函数类型,我们需要给接口定义一个调用签名。 它就像是一个只有参数列表和返回类型函数定义。...可以同时使用两种类型索引,但是数字索引返回必须是字符串索引返回类型类型。 这是因为当使用 number来索引时,JavaScript会将它转换成string然后再去索引对象。...interface StringArrayMap { [key: string]: [string]; } 类类型 与C#或Java里接口基本作用一样,TypeScript也能够用它来明确强制一个类去符合某种契约...类静态部分与实例部分区别 构造函数属于静态部分,无法进行类型检查。 这里因为当一个类实现了一个接口时,只对其实例部分进行类型检查。 constructor存在于类静态部分,所以不在检查范围内。

60030

分享 30 道 TypeScript 相关面的面试题

为什么使用它比普通 JavaScript 更有优势? 答案:TypeScript 是 JavaScript 静态类型超集,可以编译为纯 JavaScript。...当创建可能缺少结构或处理来自外部源数据(其中某些字段可能不存在)时,这非常有用。 08、在定义对象形状时,您能区分interface和type吗?...答案:与 JavaScript 一样,== 是一个执行类型强制松散相等运算符,这意味着如果不同类型在强制转换后具有相同,则可以将它们视为相等。...它通常用于不返回函数 - 例如,那些总是抛出异常或具有无限循环函数。它通过指示不应或无法到达某个代码路径来帮助确保类型安全。...是一个逻辑运算符,当其左侧操作数为空或未定义时返回其右侧操作数,否则返回其左侧操作数。这在您想要回退到默认情况下非常有用。 22、什么是映射类型,以及如何在 TypeScript 中使用它们?

60030

深入解读 iView,解耦令人头疼高度耦合复杂逻辑

node //到这一步基本上能够理解为什么要把原有的 data 节点对象,转换成 flatState,并且命名为'flatState' //原来 data 传递进来对象形式数据对有父子层级关系...这儿说明了 nodeKey 是在什么情况下加上。那么为什么遍历是 stateTree,this.data 也跟着改变了呢?...其实这也比较容易理解,可以去相关书籍中查看一下,在 JavaScript 中对于引用类型赋值过程。...比如,《JavaScript 高级程序设计》中表述: 当从一个变量向另一个变量复制引用类型时,同样也会将存储在变量对象中复制一份放到为新变量分配空间中。...使用 call() 或者 apply() 来扩充作用域最大好处,就是对象不需要与方法有任何耦合关系。 回到代码分析中。

2.1K30

一文带你解读​JavaScript变量、作用域和内存问题

一、基本类型和引用类型 基本类型:简单数据段; 引用类型:多个构成对象; 回顾: 基本数据类型:undefined;null;number;boolean;string;按照访问,可以操作保存在变量中实际...; 引用数据类型:例如Array;不能直接访问,它是保存在内存中对象; JavaScript不允许直接访问内存中位置;即不能直接操作对象内存空间; 我们在操作对象时,其实是操作对象引用,而不是对象...作用域链中下一个变量对象来自包含执行环境,再下一个对象来自再下一个包含执行环境。以此类推直至全局执行环境;全局执行环境变量对象始终是作用域链最后一个变量对象。...在引用 qs 时,引用则是定义在buildUrl() 中那个变量,它位于函数环境变量对象中;至于with语句内部,则定义了一个url变量,因而url变成函数执行环境部分,可以作为函数返回...这么一个简单修改,极大地提升了重度依赖 JavaScript 网页在浏览器中性能。 3.3 管理内存 为什么需要管理内存?

52330

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券