From 5fc71e036e80d59cff66f7d56ed47911280728f8 Mon Sep 17 00:00:00 2001 From: deadrime Date: Wed, 6 Mar 2024 23:28:20 +0300 Subject: [PATCH] Add new article, update latest articles --- articles/js-built-in-methods/page.mdx | 69 +++++++++++--------- components/LatestArticles/LatestArticles.tsx | 11 +++- 2 files changed, 49 insertions(+), 31 deletions(-) diff --git a/articles/js-built-in-methods/page.mdx b/articles/js-built-in-methods/page.mdx index 1d11fb8..719f9e6 100644 --- a/articles/js-built-in-methods/page.mdx +++ b/articles/js-built-in-methods/page.mdx @@ -409,54 +409,63 @@ Object.fromEntries([['name', 'Zhenya'], ['age', 27]]) // { name: 'Zhenya', age: ``` -`Object.keys(obj)` - вернет массив ключей +`Object.keys(obj)` - по простому - получить массив ключей. +Вернет только собственные(без прототипа) и перечисляемые(for...in) свойства. + +```js +Object.keys({ + name: 'Zhenya', + age: 27, +}) // ['name', 'age'] + +``` `Object.values(obj)` - вернет массив значений +```js +Object.values({ + name: 'Zhenya', + age: 27, +}) // ['Zhenya', 27] + +``` +

Function

-`Function.prototype.call(thisArg, ...args)` - вызывает функцию с указанным значением this и аргументами. +`Function.prototype.call(thisArg, ...args)` - вызывает функцию с указанным значением `this` и аргументами. ```ts -function sayHello() { - console.log('Hello,', this.name) +function multiply(a, b) { + this.logger(a * b); + return aa * b } -// Тоже работает -const sayHelloArrow = () => { - console.log('Hello', this.name) +multiply.call({ logger: console.log }, 2, 2); // 4 + +// Мы не можем указать контекст для стрелочной функции +const addArrowFn = (a, b) => { + this.logger(a + b); + return a + b; } -sayHello.call({ name: "Zhenya" }); // Hello, Zhenya -sayHelloArrow.call({ name: "Arina" }); // Hello, Arina +multiply.call({ logger: console.log }, 2, 2); // TypeError: this.logger is not a function -// Но вот при попытке переопределить this у стрелочной функции - не сработает -function person(name) { - this.name = name; - function sayHelloFn() { - console.log('Hello', this.name); - } +``` - // this тут всегда будет привязан к this person - const sayHelloArrow = () => { - console.log('Hello', this.name); - } +`Function.prototype.apply(thisArg, [argsArray])` - тоже самое, что и `call`, но аргументы передаются в виде массива - return { - sayHelloFn, - sayHelloArrow - } -} +```ts +multiply.apply({ logger: console.log }, [2, 3]); // 6 +``` -const somePerson = person("Misha"); +`Function.prototype.bind(thisArg, ...args)` - создает новую функцию, привязывая ей переданный `this` -somePerson.sayHello(); // Hello, Misha -somePerson.sayHello.call({ name: "Zhenya" }) // Hello, Zhenya +```ts -``` +const multiplyTwo = add.bind({ logger: console.log }, 2); -`Function.prototype.apply(thisArg, [argsArray])` - тоже самое, что и call, но аргументы передаются в виде массива +multiplyTwo(4); // 8 -`Function.prototype.bind(thisArg, ...args)` - создает новую функцию, привязывая ей переданный this +``` diff --git a/components/LatestArticles/LatestArticles.tsx b/components/LatestArticles/LatestArticles.tsx index c7bdd7c..d8212fb 100644 --- a/components/LatestArticles/LatestArticles.tsx +++ b/components/LatestArticles/LatestArticles.tsx @@ -2,14 +2,23 @@ import { getPaginatedArticles } from "@/helpers/blog"; import { BlogArticle } from "../Article"; import styles from './LatestArticles.module.css'; import classNames from "classnames"; +import Link from "next/link"; const LatestArticles = async () => { const { articles, totalCount } = await getPaginatedArticles(3); return (
-

+

Блог + {totalCount > 3 && ( + + Все статьи → + + )}

{articles.map(article => )}