JavaScript扩展:字符串方法、数组去重及继承实现
需积分: 9 155 浏览量
更新于2024-12-27
收藏 1007B ZIP 举报
资源摘要信息: "js代码-千分位:如何给string增加方法;去重;继承"
1. 给String增加方法
在JavaScript中,可以使用原型链来给String类型增加新的方法。原型链是JavaScript的核心概念之一,允许我们向现有的对象类型添加新的属性和方法。通过扩展String的原型,我们可以为所有字符串实例添加自定义的方法。例如,可以创建一个千分位格式化的函数,方便地格式化数字字符串为更易读的形式。
示例代码如下:
```javascript
// 给String原型增加一个thousandFormat方法来实现千分位格式化
String.prototype.thousandFormat = function() {
return this.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
};
// 使用新增的thousandFormat方法
let numberStr = "1234567890";
let formattedStr = numberStr.thousandFormat(); // 输出 "1,234,567,890"
```
2. 去重
在处理数组或集合数据时,常常需要去重。JavaScript提供了几种不同的方法来实现数组去重,包括使用`Set`对象、使用`filter`方法结合`indexOf`或`includes`方法、以及使用`reduce`方法。
示例代码如下:
使用`Set`对象去重:
```javascript
let arr = [1, 2, 2, 3, 4, 4, 5];
let uniqueArr = [...new Set(arr)]; // [1, 2, 3, 4, 5]
```
使用`filter`和`indexOf`去重:
```javascript
let arr = [1, 2, 2, 3, 4, 4, 5];
let uniqueArr = arr.filter((item, index, self) => self.indexOf(item) === index);
```
使用`reduce`方法去重:
```javascript
let arr = [1, 2, 2, 3, 4, 4, 5];
let uniqueArr = arr.reduce((acc, current) => {
if (acc.indexOf(current) < 0) {
acc.push(current);
}
return acc;
}, []);
```
3. 继承
JavaScript中的继承可以通过原型链(prototype chain)、构造函数和原型的组合、或者使用ES6引入的`class`关键字来实现。继承允许一个类(或函数)获取另一个类(或函数)的属性和方法。
使用原型链实现继承的示例:
```javascript
function Parent(name) {
this.name = name;
}
Parent.prototype.sayName = function() {
console.log(this.name);
};
function Child(name, age) {
Parent.call(this, name); // 调用父类构造函数
this.age = age;
}
// 继承Parent的原型属性和方法
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;
let child = new Child('Alice', 12);
child.sayName(); // 输出 "Alice"
```
使用ES6类实现继承的示例:
```javascript
class Parent {
constructor(name) {
this.name = name;
}
sayName() {
console.log(this.name);
}
}
class Child extends Parent {
constructor(name, age) {
super(name); // 调用父类的构造函数
this.age = age;
}
}
let child = new Child('Bob', 13);
child.sayName(); // 输出 "Bob"
```
在上述代码中,`Child`类通过`extends`关键字继承了`Parent`类的属性和方法,并通过`super`关键字调用了父类的构造函数。这是ES6中推荐的继承方式,更加简洁和易于理解。
以上就是基于标题和描述所提到的知识点,具体实现细节和代码示例。需要注意的是,在实际项目中,需要根据具体需求选择合适的实现方式。例如,`Set`去重虽然简洁,但在不支持ES6的环境中可能需要polyfill。而继承方面,如果项目环境仍然需要支持IE等老旧浏览器,可能需要使用传统的构造函数和原型链组合的方式。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-05-06 上传
2023-05-30 上传
2021-07-14 上传
2021-06-19 上传
2021-05-01 上传
2021-02-21 上传
weixin_38687277
- 粉丝: 10
- 资源: 949
最新资源
- WISDOM-开源
- QQ.zip_ICQ/即时通讯_Delphi_
- javascript-koans
- TTKWidgetTools:QWidget自定义控件集合持续更新中.....
- amz-code-updated
- malmon-开源
- mapper:OpenOrienteering Mapper是一款用于为定向越野运动创建地图的软件
- Zen Start-crx插件
- Xray4Magisk:X射线
- cafebean-api
- interfence-matrix.zip_数值算法/人工智能_Visual_Basic_
- TellkiAgent_JMX
- AccelerationEventListener.zip_android开发_Java_
- gcloud-kubernetes-mattermost:让我们加密,在Google Kubernetes引擎上发挥最重要的作用
- didijustgetowned
- NBaseUiKit:个人平时使用的一些Qt编写的组件(有部分是整合的开源作品,部分是自己的原创);