Skip to content

Commit 9709a97

Browse files
committed
docs: es2017 built-in object methods
1 parent dced88c commit 9709a97

5 files changed

Lines changed: 172 additions & 66 deletions

File tree

docs/standard-built-in-objects/fundamental-objects/object/entries.md

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,43 @@ order: 6
1111

1212
# Object.entries
1313

14+
⭐️ `ES2017(ES8)新特性`
15+
1416
`Object.entries()` 方法用于枚举指定对象并返回以键值对组成的数组为元素的二维数组。
1517

16-
### 语法
18+
## 语法
19+
20+
语法:
1721

1822
```js
19-
Object.entries(O);
23+
Object.entries(obj);
2024
```
2125

22-
| 参数 | 说明 | 类型 |
23-
| ---- | -------------- | ------ |
24-
| O | 用于枚举的对象 | object |
26+
类型声明:
27+
28+
```ts
29+
interface ObjectConstructor {
30+
values<T>(o: { [s: string]: T } | ArrayLike<T>): T[];
31+
32+
values(o: {}): any[];
33+
}
34+
```
35+
36+
参数说明:
37+
38+
| 参数 | 说明 | 类型 |
39+
| :---- | :------------- | :----- |
40+
| `obj` | 用于枚举的对象 | object |
41+
42+
返回值:
2543

2644
返回给定对象自身可枚举 Property 的键值对数组。
2745

28-
## 描述
46+
## 方法说明
2947

3048
给定对象自身可枚举属性的键值对数组,其排列与使用 [for-in](../../../basic-concept/statements-and-declarations/iteration-statement/the-for-in-statement) 循环遍历该对象时返回的顺序一致,区别在于 `for-in` 循环也枚举原型链中的属性。
3149

32-
## 示例
50+
## 代码示例
3351

3452
```js
3553
const a = { foo: 1, bar: 2 };
@@ -49,3 +67,7 @@ Object.entries(obj).forEach(([key, value]) => {
4967
console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
5068
});
5169
```
70+
71+
## 参考资料
72+
73+
- [TypeScript - lib.es2017.object.d.ts](https://github.com/microsoft/TypeScript/blob/main/lib/lib.es2017.object.d.ts)

docs/standard-built-in-objects/fundamental-objects/object/getOwnPropertyDescriptors.md

Lines changed: 43 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,53 @@ order: 9
1111

1212
# Object.getOwnPropertyDescriptors
1313

14+
⭐️ `ES2017(ES8)新特性`
15+
1416
`Object.getOwnPropertyDescriptors()` 方法用于获取一个对象的所有自身 Property 的 Attributes。
1517

1618
## 语法
1719

20+
语法:
21+
1822
```js
19-
Object.getOwnPropertyDescriptors(O);
23+
Object.getOwnPropertyDescriptors(obj);
24+
```
25+
26+
类型声明:
27+
28+
```ts
29+
interface ObjectConstructor {
30+
getOwnPropertyDescriptors<T>(
31+
o: T
32+
): { [P in keyof T]: TypedPropertyDescriptor<T[P]> } & { [x: string]: PropertyDescriptor };
33+
}
34+
35+
interface TypedPropertyDescriptor<T> {
36+
enumerable?: boolean;
37+
configurable?: boolean;
38+
writable?: boolean;
39+
value?: T;
40+
get?: () => T;
41+
set?: (value: T) => void;
42+
}
43+
44+
interface PropertyDescriptor {
45+
configurable?: boolean;
46+
enumerable?: boolean;
47+
value?: any;
48+
writable?: boolean;
49+
get?(): any;
50+
set?(v: any): void;
51+
}
2052
```
2153

22-
| 参数 | 说明 | 类型 |
23-
| ---- | -------------------------------------- | ------ |
24-
| O | 用于获取 Property 的 Attributes 的对象 | object |
54+
参数说明:
55+
56+
| 参数 | 说明 | 类型 |
57+
| :---- | :------------------------------------- | :----- |
58+
| `obj` | 用于获取 Property 的 Attributes 的对象 | object |
2559

26-
## 示例
60+
## 代码示例
2761

2862
```js
2963
const a = {
@@ -34,18 +68,8 @@ const a = {
3468
};
3569

3670
Object.getOwnPropertyDescriptors(a);
37-
// {
38-
// age: {
39-
// configurable: true,
40-
// enumerable: true,
41-
// get: function age(){}, //the getter function
42-
// set: undefined
43-
// },
44-
// name: {
45-
// configurable: true,
46-
// enumerable: true,
47-
// value: "Ben",
48-
// writable:true
49-
// }
50-
// }
5171
```
72+
73+
## 参考资料
74+
75+
- [TypeScript - lib.es2017.object.d.ts](https://github.com/microsoft/TypeScript/blob/main/lib/lib.es2017.object.d.ts)

docs/standard-built-in-objects/fundamental-objects/object/values.md

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,29 +11,53 @@ order: 20
1111

1212
# Object.values
1313

14+
⭐️ `ES2017(ES8)新特性`
15+
1416
`Object.values()` 方法用于指定对象自身的所有可枚举 Property 值的数组。
1517

1618
## 语法
1719

20+
语法:
21+
1822
```js
19-
Object.values(O);
23+
Object.values(obj);
2024
```
2125

22-
| 参数 | 说明 | 类型 |
23-
| ---- | -------- | ------ |
24-
| O | 指定对象 | object |
26+
类型声明:
27+
28+
```ts
29+
interface ObjectConstructor {
30+
values<T>(o: { [s: string]: T } | ArrayLike<T>): T[];
31+
32+
values(o: {}): any[];
33+
}
34+
```
35+
36+
参数说明:
37+
38+
| 参数 | 说明 | 类型 |
39+
| :---- | :------- | :----- |
40+
| `obj` | 指定对象 | object |
2541

2642
返回对象可枚举 Property 值的数组集合。
2743

28-
## 描述
44+
## 方法说明
2945

3046
返回的数组中键值的顺序与使用循环语句获取的键值组合一致。
3147

32-
## 示例
48+
## 代码示例
3349

3450
```js
35-
const foo = { a: '1', b: '2', c: '3' };
51+
const obj = {
52+
a: '1',
53+
b: '2',
54+
c: '3',
55+
};
3656

37-
console.log(Object.values(foo));
57+
console.log(Object.values(obj));
3858
// ['1', '2', '3']
3959
```
60+
61+
## 参考资料
62+
63+
- [TypeScript - lib.es2017.object.d.ts](https://github.com/microsoft/TypeScript/blob/main/lib/lib.es2017.object.d.ts)

docs/standard-built-in-objects/text-processing/string/prototype/padEnd.md

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,34 @@ order: 23
1212

1313
# String.prototype.padEnd()
1414

15-
`padEnd()` 方法会用一个字符串填充当前字符串(如果需要的话则重复填充),返回填充后达到指定长度的字符串。从当前字符串的末尾(右侧)开始填充。
15+
⭐️ `ES2017(ES8)新特性`
16+
17+
`String.prototype.padEnd()` 方法会用一个字符串填充当前字符串(如果需要的话则重复填充),返回填充后达到指定长度的字符串。从当前字符串的末尾(右侧)开始填充。
1618

1719
## 语法
1820

21+
语法:
22+
1923
```js
20-
str.padEnd(targetLength [, padString]);
24+
str.padEnd(maxLength [, fillString]);
2125
```
2226

23-
| 参数 | 说明 | 类型 |
24-
| -------------- | ---------------------------------------------------------------------------------------------------------------- | ------ |
25-
| `targetLength` | 当前字符串需要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。 | number |
26-
| `padString` | (可选)填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。 | string |
27+
类型声明:
28+
29+
```ts
30+
interface String {
31+
padEnd(maxLength: number, fillString?: string): string;
32+
}
33+
```
2734

28-
## 示例
35+
参数说明:
36+
37+
| 参数 | 说明 | 类型 |
38+
| :----------- | :--------------------------------------------------------------------------------------------------------------- | :----- |
39+
| `maxLength` | 当前字符串需要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。 | number |
40+
| `fillString` | (可选)填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。 | string |
41+
42+
## 代码示例
2943

3044
```js
3145
const str = 'abc';
@@ -43,22 +57,26 @@ str.padEnd('10', 'foo');
4357
// 'abcfoofoof'
4458
```
4559

46-
## Polyfill
60+
## 兼容性代码
4761

4862
```js
4963
if (String.prototype.padEnd) {
50-
String.prototype.padEnd = function padEnd(targetLength, padString) {
51-
targetLength = targetLength >> 0;
52-
padString = String(typeof padString !== 'undefined' ? padString : '');
53-
if (this.length > targetLength) {
64+
String.prototype.padEnd = function padEnd(maxLength, fillString) {
65+
maxLength = maxLength >> 0;
66+
fillString = String(typeof fillString !== 'undefined' ? fillString : '');
67+
if (this.length > maxLength) {
5468
return String(this);
5569
} else {
56-
targetLength = targetLength - this.length;
57-
if (targetLength > padString.length) {
58-
padString += padString.repeat(targetLength / padString.length);
70+
maxLength = maxLength - this.length;
71+
if (maxLength > fillString.length) {
72+
fillString += fillString.repeat(maxLength / fillString.length);
5973
}
60-
return String(this) + padString.slice(0, targetLength);
74+
return String(this) + fillString.slice(0, maxLength);
6175
}
6276
};
6377
}
6478
```
79+
80+
## 参考资料
81+
82+
- [TypeScript - lib.es2017.string.d.ts](https://github.com/microsoft/TypeScript/blob/main/lib/lib.es2017.string.d.ts)

docs/standard-built-in-objects/text-processing/string/prototype/padStart.md

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,34 @@ order: 24
1212

1313
# String.prototype.padStart()
1414

15-
`padStart()` 方法用另一个字符串填充当前字符串(重复,如果需要的话),以便产生的字符串达到给定的长度。填充从当前字符串的开始(左侧)应用的。
15+
⭐️ `ES2017(ES8)新特性`
16+
17+
`String.prototype.padStart()` 方法用另一个字符串填充当前字符串(重复,如果需要的话),以便产生的字符串达到给定的长度。填充从当前字符串的开始(左侧)应用的。
1618

1719
## 语法
1820

21+
语法:
22+
1923
```js
20-
str.padStart(targetLength [, padString]);
24+
str.padStart(maxLength [, fillString]);
2125
```
2226

23-
| 参数 | 说明 | 类型 |
24-
| -------------- | ---------------------------------------------------------------------------------------------------------------- | ------ |
25-
| `targetLength` | 当前字符串需要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。 | number |
26-
| `padString` | (可选)填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。 | string |
27+
类型声明:
28+
29+
```ts
30+
interface String {
31+
padStart(maxLength: number, fillString?: string): string;
32+
}
33+
```
2734

28-
## 示例
35+
参数说明:
36+
37+
| 参数 | 说明 | 类型 |
38+
| :----------- | :--------------------------------------------------------------------------------------------------------------- | :----- |
39+
| `maxLength` | 当前字符串需要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。 | number |
40+
| `fillString` | (可选)填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。 | string |
41+
42+
## 代码示例
2943

3044
```js
3145
const str = 'abc';
@@ -43,22 +57,26 @@ str.padStart('10', 'foo');
4357
// 'foofoofabc'
4458
```
4559

46-
## Polyfill
60+
## 兼容性代码
4761

4862
```js
4963
if (String.prototype.padStart) {
50-
String.prototype.padStart = function padStart(targetLength, padString) {
51-
targetLength = targetLength >> 0;
52-
padString = String(typeof padString !== 'undefined' ? padString : '');
53-
if (this.length > targetLength) {
64+
String.prototype.padStart = function padStart(maxLength, fillString) {
65+
maxLength = maxLength >> 0;
66+
fillString = String(typeof fillString !== 'undefined' ? fillString : '');
67+
if (this.length > maxLength) {
5468
return String(this);
5569
} else {
56-
targetLength = targetLength - this.length;
57-
if (targetLength > padString.length) {
58-
padString += padString.repeat(targetLength / padString.length);
70+
maxLength = maxLength - this.length;
71+
if (maxLength > fillString.length) {
72+
fillString += fillString.repeat(maxLength / fillString.length);
5973
}
60-
return padString.slice(0, targetLength) + String(this);
74+
return fillString.slice(0, maxLength) + String(this);
6175
}
6276
};
6377
}
6478
```
79+
80+
## 参考资料
81+
82+
- [TypeScript - lib.es2017.string.d.ts](https://github.com/microsoft/TypeScript/blob/main/lib/lib.es2017.string.d.ts)

0 commit comments

Comments
 (0)