[qns] update topics

This commit is contained in:
Yangshun 2024-11-16 08:36:10 +08:00
parent c0165faa8e
commit fcbbeda777
378 changed files with 1522 additions and 601 deletions

View File

@ -1,6 +1,6 @@
[
{
"access": "free",
"access": "premium",
"author": "yangshun",
"companies": [],
"created": 1671580800,
@ -36,7 +36,9 @@
"slug": "accordion",
"subtitle": null,
"title": "Accordion",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "premium",
@ -74,7 +76,9 @@
"slug": "accordion-ii",
"subtitle": null,
"title": "Accordion II",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "premium",
@ -106,7 +110,9 @@
"slug": "accordion-iii",
"subtitle": null,
"title": "Accordion III",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "premium",
@ -159,7 +165,10 @@
"slug": "analog-clock",
"subtitle": null,
"title": "Analog Clock",
"topics": []
"topics": [
"a11y",
"async"
]
},
{
"access": "premium",
@ -405,7 +414,9 @@
"slug": "auth-code-input",
"subtitle": null,
"title": "Auth Code Input",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "premium",
@ -427,9 +438,7 @@
"js",
"ts"
],
"nextQuestions": [
""
],
"nextQuestions": [],
"published": true,
"ranking": 100,
"similarQuestions": [
@ -439,7 +448,9 @@
"slug": "backbone-model",
"subtitle": null,
"title": "Backbone Model",
"topics": []
"topics": [
"oop"
]
},
{
"access": "free",
@ -576,7 +587,9 @@
"slug": "camel-case-keys",
"subtitle": null,
"title": "Camel Case Keys",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -605,7 +618,9 @@
"slug": "cancellable-interval",
"subtitle": null,
"title": "Cancellable Interval",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -634,7 +649,9 @@
"slug": "cancellable-timeout",
"subtitle": null,
"title": "Cancellable Timeout",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -966,7 +983,9 @@
"slug": "contact-form",
"subtitle": null,
"title": "Contact Form",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "free",
@ -1176,7 +1195,9 @@
"slug": "cycle",
"subtitle": null,
"title": "Cycle",
"topics": []
"topics": [
"closure"
]
},
{
"access": "premium",
@ -1416,7 +1437,9 @@
"slug": "debounce",
"subtitle": null,
"title": "Debounce",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -1454,7 +1477,9 @@
"slug": "debounce-ii",
"subtitle": null,
"title": "Debounce II",
"topics": []
"topics": [
"async"
]
},
{
"access": "free",
@ -1490,7 +1515,9 @@
"slug": "deep-clone",
"subtitle": null,
"title": "Deep Clone",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -1519,7 +1546,9 @@
"slug": "deep-clone-ii",
"subtitle": null,
"title": "Deep Clone II",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -1551,7 +1580,9 @@
"slug": "deep-equal",
"subtitle": null,
"title": "Deep Equal",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -1581,7 +1612,9 @@
"slug": "deep-map",
"subtitle": null,
"title": "Deep Map",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -1610,7 +1643,9 @@
"slug": "deep-merge",
"subtitle": null,
"title": "Deep Merge",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -1639,7 +1674,9 @@
"slug": "deep-omit",
"subtitle": null,
"title": "Deep Omit",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "free",
@ -1713,7 +1750,9 @@
"slug": "dice-roller",
"subtitle": null,
"title": "Dice Roller",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "premium",
@ -1795,7 +1834,10 @@
"slug": "digital-clock",
"subtitle": null,
"title": "Digital Clock",
"topics": []
"topics": [
"a11y",
"async"
]
},
{
"access": "premium",
@ -1890,7 +1932,9 @@
"slug": "event-emitter",
"subtitle": null,
"title": "Event Emitter",
"topics": []
"topics": [
"oop"
]
},
{
"access": "premium",
@ -1926,7 +1970,9 @@
"slug": "event-emitter-ii",
"subtitle": null,
"title": "Event Emitter II",
"topics": []
"topics": [
"oop"
]
},
{
"access": "free",
@ -1968,7 +2014,9 @@
"slug": "file-explorer",
"subtitle": null,
"title": "File Explorer",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "premium",
@ -2038,7 +2086,7 @@
"js"
],
"nextQuestions": [
"file-explorer-iii"
"nested-checkboxes"
],
"published": true,
"ranking": 100,
@ -2172,7 +2220,9 @@
"slug": "flatten",
"subtitle": null,
"title": "Flatten",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -2190,6 +2240,10 @@
"framework": "react",
"href": "/questions/user-interface/flight-booker/react"
},
{
"framework": "vanilla",
"href": "/questions/user-interface/flight-booker/vanilla"
},
{
"framework": "angular",
"href": "/questions/user-interface/flight-booker/angular"
@ -2216,7 +2270,9 @@
"slug": "flight-booker",
"subtitle": null,
"title": "Flight Booker",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "premium",
@ -2450,7 +2506,9 @@
"slug": "get",
"subtitle": null,
"title": "Get",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -2486,7 +2544,9 @@
"slug": "get-elements-by-class-name",
"subtitle": null,
"title": "getElementsByClassName",
"topics": []
"topics": [
"web-api"
]
},
{
"access": "premium",
@ -2520,7 +2580,9 @@
"slug": "get-elements-by-style",
"subtitle": null,
"title": "getElementsByStyle",
"topics": []
"topics": [
"web-api"
]
},
{
"access": "premium",
@ -2553,7 +2615,9 @@
"slug": "get-elements-by-tag-name",
"subtitle": null,
"title": "getElementsByTagName",
"topics": []
"topics": [
"web-api"
]
},
{
"access": "premium",
@ -2587,7 +2651,9 @@
"slug": "get-elements-by-tag-name-hierarchy",
"subtitle": null,
"title": "getElementsByTagNameHierarchy",
"topics": []
"topics": [
"web-api"
]
},
{
"access": "premium",
@ -2634,7 +2700,10 @@
"slug": "grid-lights",
"subtitle": null,
"title": "Grid Lights",
"topics": []
"topics": [
"a11y",
"async"
]
},
{
"access": "premium",
@ -2780,7 +2849,9 @@
"slug": "html-serializer",
"subtitle": null,
"title": "HTML Serializer",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -2810,7 +2881,11 @@
"slug": "identical-dom-trees",
"subtitle": null,
"title": "Identical DOM Trees",
"topics": []
"topics": [
"recursion",
"tree",
"web-api"
]
},
{
"access": "free",
@ -2854,7 +2929,9 @@
"slug": "image-carousel",
"subtitle": null,
"title": "Image Carousel",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "premium",
@ -2897,7 +2974,9 @@
"slug": "image-carousel-ii",
"subtitle": null,
"title": "Image Carousel II",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "premium",
@ -3167,7 +3246,9 @@
"slug": "job-board",
"subtitle": null,
"title": "Job Board",
"topics": []
"topics": [
"networking"
]
},
{
"access": "premium",
@ -3198,7 +3279,10 @@
"slug": "jquery-class-manipulation",
"subtitle": null,
"title": "jQuery Class Manipulation",
"topics": []
"topics": [
"oop",
"web-api"
]
},
{
"access": "premium",
@ -3229,7 +3313,10 @@
"slug": "jquery-css",
"subtitle": null,
"title": "jQuery.css",
"topics": []
"topics": [
"oop",
"web-api"
]
},
{
"access": "premium",
@ -3262,7 +3349,9 @@
"slug": "json-stringify",
"subtitle": null,
"title": "JSON.stringify",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -3293,7 +3382,9 @@
"slug": "json-stringify-ii",
"subtitle": null,
"title": "JSON.stringify II",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -3340,7 +3431,10 @@
"slug": "like-button",
"subtitle": null,
"title": "Like Button",
"topics": []
"topics": [
"async",
"networking"
]
},
{
"access": "premium",
@ -3431,7 +3525,9 @@
"slug": "make-counter",
"subtitle": null,
"title": "Make Counter",
"topics": []
"topics": [
"closure"
]
},
{
"access": "premium",
@ -3463,7 +3559,9 @@
"slug": "make-counter-ii",
"subtitle": null,
"title": "Make Counter II",
"topics": []
"topics": [
"closure"
]
},
{
"access": "premium",
@ -3498,7 +3596,9 @@
"slug": "map-async",
"subtitle": null,
"title": "Map Async",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -3531,7 +3631,9 @@
"slug": "map-async-limit",
"subtitle": null,
"title": "Map Async Limit",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -3790,7 +3892,9 @@
"slug": "modal-dialog",
"subtitle": null,
"title": "Modal Dialog",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "premium",
@ -3827,7 +3931,9 @@
"slug": "modal-dialog-ii",
"subtitle": null,
"title": "Modal Dialog II",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "premium",
@ -3863,7 +3969,9 @@
"slug": "modal-dialog-iii",
"subtitle": null,
"title": "Modal Dialog III",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "premium",
@ -3897,7 +4005,9 @@
"slug": "modal-dialog-iv",
"subtitle": null,
"title": "Modal Dialog IV",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "free",
@ -4075,7 +4185,9 @@
"slug": "once",
"subtitle": null,
"title": "Once",
"topics": []
"topics": [
"closure"
]
},
{
"access": "premium",
@ -4120,7 +4232,9 @@
"slug": "pixel-art",
"subtitle": null,
"title": "Pixel Art",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "premium",
@ -4202,7 +4316,9 @@
"slug": "progress-bars",
"subtitle": null,
"title": "Progress Bars",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -4239,7 +4355,9 @@
"slug": "progress-bars-ii",
"subtitle": null,
"title": "Progress Bars II",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -4276,7 +4394,9 @@
"slug": "progress-bars-iii",
"subtitle": null,
"title": "Progress Bars III",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -4311,7 +4431,9 @@
"slug": "progress-bars-iv",
"subtitle": null,
"title": "Progress Bars IV",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -4343,7 +4465,9 @@
"slug": "promise-merge",
"subtitle": null,
"title": "Promise Merge",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -4370,7 +4494,9 @@
"slug": "promise-timeout",
"subtitle": null,
"title": "Promise Timeout",
"topics": []
"topics": [
"async"
]
},
{
"access": "free",
@ -4411,7 +4537,9 @@
"slug": "promise-all",
"subtitle": null,
"title": "Promise.all",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -4442,7 +4570,9 @@
"slug": "promise-all-settled",
"subtitle": null,
"title": "Promise.allSettled",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -4473,7 +4603,9 @@
"slug": "promise-any",
"subtitle": null,
"title": "Promise.any",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -4506,7 +4638,9 @@
"slug": "promise-race",
"subtitle": null,
"title": "Promise.race",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -4539,7 +4673,9 @@
"slug": "promise-reject",
"subtitle": null,
"title": "Promise.reject",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -4572,7 +4708,9 @@
"slug": "promise-resolve",
"subtitle": null,
"title": "Promise.resolve",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -4602,7 +4740,9 @@
"slug": "promise-with-resolvers",
"subtitle": null,
"title": "Promise.withResolvers",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -4633,7 +4773,9 @@
"slug": "promisify",
"subtitle": null,
"title": "Promisify",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -4660,7 +4802,9 @@
"slug": "promisify-ii",
"subtitle": null,
"title": "Promisify II",
"topics": []
"topics": [
"async"
]
},
{
"access": "free",
@ -4811,7 +4955,10 @@
"slug": "resumable-interval",
"subtitle": null,
"title": "Resumable Interval",
"topics": []
"topics": [
"async",
"closure"
]
},
{
"access": "premium",
@ -4993,7 +5140,9 @@
"slug": "sleep",
"subtitle": null,
"title": "Sleep",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -5023,7 +5172,9 @@
"slug": "squash-object",
"subtitle": null,
"title": "Squash Object",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "free",
@ -5159,7 +5310,9 @@
"slug": "stopwatch",
"subtitle": null,
"title": "Stopwatch",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -5191,7 +5344,9 @@
"slug": "sum",
"subtitle": null,
"title": "Sum",
"topics": []
"topics": [
"closure"
]
},
{
"access": "premium",
@ -5221,7 +5376,11 @@
"slug": "table-of-contents",
"subtitle": null,
"title": "Table of Contents",
"topics": []
"topics": [
"recursion",
"tree",
"web-api"
]
},
{
"access": "free",
@ -5271,7 +5430,9 @@
"slug": "tabs",
"subtitle": null,
"title": "Tabs",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "premium",
@ -5321,7 +5482,9 @@
"slug": "tabs-ii",
"subtitle": null,
"title": "Tabs II",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "premium",
@ -5364,7 +5527,9 @@
"slug": "tabs-iii",
"subtitle": null,
"title": "Tabs III",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "premium",
@ -5512,7 +5677,9 @@
"slug": "throttle",
"subtitle": null,
"title": "Throttle",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -5564,7 +5731,9 @@
"slug": "tic-tac-toe",
"subtitle": null,
"title": "Tic-tac-toe",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "premium",
@ -5614,7 +5783,9 @@
"slug": "tic-tac-toe-ii",
"subtitle": null,
"title": "Tic-tac-toe II",
"topics": []
"topics": [
"a11y"
]
},
{
"access": "free",
@ -5755,7 +5926,9 @@
"slug": "traffic-light",
"subtitle": null,
"title": "Traffic Light",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -5881,7 +6054,9 @@
"slug": "turtle",
"subtitle": null,
"title": "Turtle",
"topics": []
"topics": [
"oop"
]
},
{
"access": "premium",

View File

@ -28,9 +28,7 @@
"js",
"ts"
],
"nextQuestions": [
""
],
"nextQuestions": [],
"published": true,
"ranking": 100,
"similarQuestions": [
@ -40,7 +38,9 @@
"slug": "backbone-model",
"subtitle": null,
"title": "Backbone Model",
"topics": []
"topics": [
"oop"
]
},
"skeleton": {
"js": "// You are free to use alternative approaches of\n// defining BackboneModel as long as the\n// default export can be instantiated.\nexport default class BackboneModel {\n /**\n * @param {Object} initialValues\n * @returns BackboneModel\n */\n constructor(initialValues) {\n throw 'Not implemented!';\n }\n\n /**\n * Get the value of a specific attribute.\n * @param {string} attribute - The attribute name.\n * @returns {any | undefined} The value of the attribute.\n */\n get(attribute) {\n throw 'Not implemented!';\n }\n\n /**\n * Set the value of a specific attribute.\n * @param {string} attribute - The attribute name.\n * @param {any} value - The value to set for the attribute.\n */\n set(attribute, value) {\n throw 'Not implemented!';\n }\n\n /**\n * Check if the model has a specific attribute.\n * @param {string} attribute - The attribute name.\n * @returns {boolean} `true` if the model has the attribute, `false` otherwise.\n */\n has(attribute) {\n throw 'Not implemented!';\n }\n\n /**\n * Unset a specific attribute.\n * @param {string} attribute - The attribute name to unset.\n */\n unset(attribute) {\n throw 'Not implemented!';\n }\n\n /**\n * Register an event listener for changes to a specific attribute.\n * @param {string} eventName - The event name.\n * @param {string} attribute - The attribute name to listen for changes.\n * @param {Function} callback - The callback function to be executed on the event.\n * @param {any} [context] - The context in which to execute the callback.\n */\n on(eventName, attribute, callback, context) {\n throw 'Not implemented!';\n }\n\n /**\n * Remove an event listener for changes to a specific attribute.\n * @param {string} eventName - The event name.\n * @param {string} attribute - The attribute name to stop listening for changes.\n * @param {Function} callback - The callback function to remove.\n */\n off(eventName, attribute, callback) {\n throw 'Not implemented!';\n }\n}",

View File

@ -36,7 +36,9 @@
"slug": "camel-case-keys",
"subtitle": null,
"title": "Camel Case Keys",
"topics": []
"topics": [
"recursion"
]
},
"skeleton": {
"js": "/**\n * @param Object\n * @return Object\n */\nexport default function camelCaseKeys(object) {\n throw 'Not implemented!';\n}",

View File

@ -35,7 +35,9 @@
"slug": "cancellable-interval",
"subtitle": null,
"title": "Cancellable Interval",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @param {Function} callback\n * @param {number} delay\n * @param {...any} args\n * @returns {Function}\n */\nexport default function setCancellableInterval(callback, delay, ...args) {\n throw 'Not implemented';\n}",

View File

@ -35,7 +35,9 @@
"slug": "cancellable-timeout",
"subtitle": null,
"title": "Cancellable Timeout",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @param {Function} callback\n * @param {number} delay\n * @param {...any} args\n * @returns {Function}\n */\nexport default function setCancellableTimeout(callback, delay, ...args) {\n throw 'Not implemented';\n}",

View File

@ -33,7 +33,9 @@
"slug": "cycle",
"subtitle": null,
"title": "Cycle",
"topics": []
"topics": [
"closure"
]
},
"skeleton": {
"js": "/**\n * @template T\n * @param {...T} values\n *\n * @returns () => T\n */\nexport default function cycle(...values) {\n throw 'Not implemented';\n}",

View File

@ -44,7 +44,9 @@
"slug": "debounce-ii",
"subtitle": null,
"title": "Debounce II",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @param {Function} func\n * @param {number} wait\n * @return {Function}\n */\nexport default function debounce(func, wait) {\n throw 'Not implemented!';\n}",

View File

@ -45,7 +45,9 @@
"slug": "debounce",
"subtitle": null,
"title": "Debounce",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @param {Function} func\n * @param {number} wait\n * @return {Function}\n */\nexport default function debounce(func, wait) {\n throw 'Not implemented!';\n}",

View File

@ -35,7 +35,9 @@
"slug": "deep-clone-ii",
"subtitle": null,
"title": "Deep Clone II",
"topics": []
"topics": [
"recursion"
]
},
"skeleton": {
"js": "/**\n * @template T\n * @param {T} value\n * @return {T}\n */\nexport default function deepClone(value) {\n throw 'Not implemented!';\n}",

View File

@ -42,7 +42,9 @@
"slug": "deep-clone",
"subtitle": null,
"title": "Deep Clone",
"topics": []
"topics": [
"recursion"
]
},
"skeleton": {
"js": "/**\n * @template T\n * @param {T} value\n * @return {T}\n */\nexport default function deepClone(value) {\n throw 'Not implemented!';\n}",

View File

@ -38,7 +38,9 @@
"slug": "deep-equal",
"subtitle": null,
"title": "Deep Equal",
"topics": []
"topics": [
"recursion"
]
},
"skeleton": {
"js": "/**\n * @param {*} valueA\n * @param {*} valueB\n * @return {boolean}\n */\nexport default function deepEqual(valueA, valueB) {\n throw 'Not implemented!';\n}",

View File

@ -36,7 +36,9 @@
"slug": "deep-map",
"subtitle": null,
"title": "Deep Map",
"topics": []
"topics": [
"recursion"
]
},
"skeleton": {
"js": "/**\n * @param {any} value\n * @param {Function} fn\n * @returns any\n */\nexport default function deepMap(value, fn) {\n throw 'Not implemented';\n}",

View File

@ -35,7 +35,9 @@
"slug": "deep-merge",
"subtitle": null,
"title": "Deep Merge",
"topics": []
"topics": [
"recursion"
]
},
"skeleton": {
"js": "/**\n * @param {Object|Array} valA\n * @param {Object|Array} valB\n * @returns Object|Array\n */\nexport default function deepMerge(valA, valB) {\n throw 'Not implemented';\n}",

View File

@ -35,7 +35,9 @@
"slug": "deep-omit",
"subtitle": null,
"title": "Deep Omit",
"topics": []
"topics": [
"recursion"
]
},
"skeleton": {
"js": "/**\n * @param {any} val\n * @param {Array<string>} keys\n * @returns any\n */\nexport default function deepOmit(val, keys) {\n throw 'Not implemented';\n}",

View File

@ -42,7 +42,9 @@
"slug": "event-emitter-ii",
"subtitle": null,
"title": "Event Emitter II",
"topics": []
"topics": [
"oop"
]
},
"skeleton": {
"js": "// You are free to use alternative approaches of\n// instantiating the EventEmitter as long as the\n// default export is correct.\nexport default class EventEmitter {\n constructor() {\n throw 'Not implemented!';\n }\n\n /**\n * @param {string} eventName\n * @param {Function} listener\n * @returns {{off: Function}}\n */\n on(eventName, listener) {\n throw 'Not implemented!';\n }\n\n /**\n * @param {string} eventName\n * @param {...any} args\n * @returns boolean\n */\n emit(eventName, ...args) {\n throw 'Not implemented!';\n }\n}",

View File

@ -43,7 +43,9 @@
"slug": "event-emitter",
"subtitle": null,
"title": "Event Emitter",
"topics": []
"topics": [
"oop"
]
},
"skeleton": {
"js": "// You are free to use alternative approaches of\n// instantiating the EventEmitter as long as the\n// default export is correct.\n\nexport default class EventEmitter {\n constructor() {\n throw 'Not implemented!';\n }\n\n /**\n * @param {string} eventName\n * @param {Function} listener\n * @returns {EventEmitter}\n */\n on(eventName, listener) {\n throw 'Not implemented!';\n }\n\n /**\n * @param {string} eventName\n * @param {Function} listener\n * @returns {EventEmitter}\n */\n off(eventName, listener) {\n throw 'Not implemented!';\n }\n\n /**\n * @param {string} eventName\n * @param {...any} args\n * @returns {boolean}\n */\n emit(eventName, ...args) {\n throw 'Not implemented!';\n }\n}",

View File

@ -47,7 +47,9 @@
"slug": "flatten",
"subtitle": null,
"title": "Flatten",
"topics": []
"topics": [
"recursion"
]
},
"skeleton": {
"js": "/**\n * @param {Array<*|Array>} value\n * @return {Array}\n */\nexport default function flatten(value) {\n throw 'Not implemented!';\n}",

View File

@ -42,7 +42,9 @@
"slug": "get-elements-by-class-name",
"subtitle": null,
"title": "getElementsByClassName",
"topics": []
"topics": [
"web-api"
]
},
"skeleton": {
"js": "/**\n * @param {Element} element\n * @param {string} classNames\n * @return {Array<Element>}\n */\nexport default function getElementsByClassName(element, classNames) {\n throw 'Not implemented!';\n}",

View File

@ -40,7 +40,9 @@
"slug": "get-elements-by-style",
"subtitle": null,
"title": "getElementsByStyle",
"topics": []
"topics": [
"web-api"
]
},
"skeleton": {
"js": "/**\n * @param {Element} element\n * @param {string} property\n * @param {string} value\n * @return {Array<Element>}\n */\nexport default function getElementsByStyle(element, property, value) {\n throw 'Not implemented!';\n}",

View File

@ -40,7 +40,9 @@
"slug": "get-elements-by-tag-name-hierarchy",
"subtitle": null,
"title": "getElementsByTagNameHierarchy",
"topics": []
"topics": [
"web-api"
]
},
"skeleton": {
"js": "/**\n * @param {Document} document\n * @param {string} tagNames\n * @return {Array<Element>}\n */\nexport default function getElementsByTagNameHierarchy(document, tagNames) {\n throw 'Not implemented!';\n}",

View File

@ -39,7 +39,9 @@
"slug": "get-elements-by-tag-name",
"subtitle": null,
"title": "getElementsByTagName",
"topics": []
"topics": [
"web-api"
]
},
"skeleton": {
"js": "/**\n * @param {Element} el\n * @param {string} tagName\n * @return {Array<Element>}\n */\nexport default function getElementsByTagName(el, tagName) {\n throw 'Not implemented!';\n}",

View File

@ -37,7 +37,9 @@
"slug": "get",
"subtitle": null,
"title": "Get",
"topics": []
"topics": [
"recursion"
]
},
"skeleton": {
"js": "/**\n * @param {Object} objectParam\n * @param {string|Array<string>} pathParam\n * @param {*} [defaultValue]\n * @return {*}\n */\nexport default function get(objectParam, pathParam, defaultValue) {\n throw 'Not implemented!';\n}",

View File

@ -38,7 +38,9 @@
"slug": "html-serializer",
"subtitle": null,
"title": "HTML Serializer",
"topics": []
"topics": [
"recursion"
]
},
"skeleton": {
"js": "/**\n * @param {Object} element\n * @return {string}\n */\nexport default function serializeHTML(element) {\n throw 'Not implemented!';\n}",

View File

@ -36,7 +36,11 @@
"slug": "identical-dom-trees",
"subtitle": null,
"title": "Identical DOM Trees",
"topics": []
"topics": [
"recursion",
"tree",
"web-api"
]
},
"skeleton": {
"js": "/**\n * @param {Node} nodeA\n * @param {Node} nodeB\n * @return {boolean}\n */\nexport default function identicalDOMTrees(nodeA, nodeB) {\n throw 'Not implemented!';\n}",

View File

@ -37,7 +37,10 @@
"slug": "jquery-class-manipulation",
"subtitle": null,
"title": "jQuery Class Manipulation",
"topics": []
"topics": [
"oop",
"web-api"
]
},
"skeleton": {
"js": "/**\n * @param {string} selector\n * @return {{toggleClass: Function, addClass: Function, removeClass: Function}}\n */\nexport default function $(selector) {\n const element = document.querySelector(selector);\n\n return {\n /**\n * @param {string} className\n * @param {boolean} [state]\n * @return {Object|void}\n */\n toggleClass: function (className, state) {\n throw 'Not implemented!';\n },\n /**\n * @param {string} className\n * @return {Object}\n */\n addClass: function (className) {\n throw 'Not implemented!';\n },\n /**\n * @param {string} className\n * @return {Object}\n */\n removeClass: function (className) {\n throw 'Not implemented!';\n },\n };\n}",

View File

@ -37,7 +37,10 @@
"slug": "jquery-css",
"subtitle": null,
"title": "jQuery.css",
"topics": []
"topics": [
"oop",
"web-api"
]
},
"skeleton": {
"js": "/**\n * @param {string} selector\n * @return {{css: Function}}\n */\nexport default function $(selector) {\n throw 'Not implemented!';\n}",

View File

@ -37,7 +37,9 @@
"slug": "json-stringify-ii",
"subtitle": null,
"title": "JSON.stringify II",
"topics": []
"topics": [
"recursion"
]
},
"skeleton": {
"js": "/**\n * @param {*} value\n * @return {string}\n */\nexport default function jsonStringify(value) {\n throw 'Not implemented!';\n}",

View File

@ -39,7 +39,9 @@
"slug": "json-stringify",
"subtitle": null,
"title": "JSON.stringify",
"topics": []
"topics": [
"recursion"
]
},
"skeleton": {
"js": "/**\n * @param {*} value\n * @return {string}\n */\nexport default function jsonStringify(value) {\n throw 'Not implemented!';\n}",

View File

@ -232,9 +232,7 @@
"js",
"ts"
],
"nextQuestions": [
""
],
"nextQuestions": [],
"published": true,
"ranking": 100,
"similarQuestions": [
@ -244,7 +242,9 @@
"slug": "backbone-model",
"subtitle": null,
"title": "Backbone Model",
"topics": []
"topics": [
"oop"
]
},
{
"access": "premium",
@ -274,7 +274,9 @@
"slug": "camel-case-keys",
"subtitle": null,
"title": "Camel Case Keys",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -303,7 +305,9 @@
"slug": "cancellable-interval",
"subtitle": null,
"title": "Cancellable Interval",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -332,7 +336,9 @@
"slug": "cancellable-timeout",
"subtitle": null,
"title": "Cancellable Timeout",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -718,7 +724,9 @@
"slug": "cycle",
"subtitle": null,
"title": "Cycle",
"topics": []
"topics": [
"closure"
]
},
{
"access": "premium",
@ -820,7 +828,9 @@
"slug": "debounce",
"subtitle": null,
"title": "Debounce",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -858,7 +868,9 @@
"slug": "debounce-ii",
"subtitle": null,
"title": "Debounce II",
"topics": []
"topics": [
"async"
]
},
{
"access": "free",
@ -894,7 +906,9 @@
"slug": "deep-clone",
"subtitle": null,
"title": "Deep Clone",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -923,7 +937,9 @@
"slug": "deep-clone-ii",
"subtitle": null,
"title": "Deep Clone II",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -955,7 +971,9 @@
"slug": "deep-equal",
"subtitle": null,
"title": "Deep Equal",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -985,7 +1003,9 @@
"slug": "deep-map",
"subtitle": null,
"title": "Deep Map",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -1014,7 +1034,9 @@
"slug": "deep-merge",
"subtitle": null,
"title": "Deep Merge",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -1043,7 +1065,9 @@
"slug": "deep-omit",
"subtitle": null,
"title": "Deep Omit",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -1169,7 +1193,9 @@
"slug": "event-emitter",
"subtitle": null,
"title": "Event Emitter",
"topics": []
"topics": [
"oop"
]
},
{
"access": "premium",
@ -1205,7 +1231,9 @@
"slug": "event-emitter-ii",
"subtitle": null,
"title": "Event Emitter II",
"topics": []
"topics": [
"oop"
]
},
{
"access": "premium",
@ -1331,7 +1359,9 @@
"slug": "flatten",
"subtitle": null,
"title": "Flatten",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -1515,7 +1545,9 @@
"slug": "get",
"subtitle": null,
"title": "Get",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -1551,7 +1583,9 @@
"slug": "get-elements-by-class-name",
"subtitle": null,
"title": "getElementsByClassName",
"topics": []
"topics": [
"web-api"
]
},
{
"access": "premium",
@ -1585,7 +1619,9 @@
"slug": "get-elements-by-style",
"subtitle": null,
"title": "getElementsByStyle",
"topics": []
"topics": [
"web-api"
]
},
{
"access": "premium",
@ -1618,7 +1654,9 @@
"slug": "get-elements-by-tag-name",
"subtitle": null,
"title": "getElementsByTagName",
"topics": []
"topics": [
"web-api"
]
},
{
"access": "premium",
@ -1652,7 +1690,9 @@
"slug": "get-elements-by-tag-name-hierarchy",
"subtitle": null,
"title": "getElementsByTagNameHierarchy",
"topics": []
"topics": [
"web-api"
]
},
{
"access": "premium",
@ -1713,7 +1753,9 @@
"slug": "html-serializer",
"subtitle": null,
"title": "HTML Serializer",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -1743,7 +1785,11 @@
"slug": "identical-dom-trees",
"subtitle": null,
"title": "Identical DOM Trees",
"topics": []
"topics": [
"recursion",
"tree",
"web-api"
]
},
{
"access": "premium",
@ -1920,7 +1966,10 @@
"slug": "jquery-class-manipulation",
"subtitle": null,
"title": "jQuery Class Manipulation",
"topics": []
"topics": [
"oop",
"web-api"
]
},
{
"access": "premium",
@ -1951,7 +2000,10 @@
"slug": "jquery-css",
"subtitle": null,
"title": "jQuery.css",
"topics": []
"topics": [
"oop",
"web-api"
]
},
{
"access": "premium",
@ -1984,7 +2036,9 @@
"slug": "json-stringify",
"subtitle": null,
"title": "JSON.stringify",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -2015,7 +2069,9 @@
"slug": "json-stringify-ii",
"subtitle": null,
"title": "JSON.stringify II",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -2106,7 +2162,9 @@
"slug": "make-counter",
"subtitle": null,
"title": "Make Counter",
"topics": []
"topics": [
"closure"
]
},
{
"access": "premium",
@ -2138,7 +2196,9 @@
"slug": "make-counter-ii",
"subtitle": null,
"title": "Make Counter II",
"topics": []
"topics": [
"closure"
]
},
{
"access": "premium",
@ -2173,7 +2233,9 @@
"slug": "map-async",
"subtitle": null,
"title": "Map Async",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -2206,7 +2268,9 @@
"slug": "map-async-limit",
"subtitle": null,
"title": "Map Async Limit",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -2448,7 +2512,9 @@
"slug": "once",
"subtitle": null,
"title": "Once",
"topics": []
"topics": [
"closure"
]
},
{
"access": "free",
@ -2489,7 +2555,9 @@
"slug": "promise-all",
"subtitle": null,
"title": "Promise.all",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -2520,7 +2588,9 @@
"slug": "promise-all-settled",
"subtitle": null,
"title": "Promise.allSettled",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -2551,7 +2621,9 @@
"slug": "promise-any",
"subtitle": null,
"title": "Promise.any",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -2583,7 +2655,9 @@
"slug": "promise-merge",
"subtitle": null,
"title": "Promise Merge",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -2616,7 +2690,9 @@
"slug": "promise-race",
"subtitle": null,
"title": "Promise.race",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -2649,7 +2725,9 @@
"slug": "promise-reject",
"subtitle": null,
"title": "Promise.reject",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -2682,7 +2760,9 @@
"slug": "promise-resolve",
"subtitle": null,
"title": "Promise.resolve",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -2709,7 +2789,9 @@
"slug": "promise-timeout",
"subtitle": null,
"title": "Promise Timeout",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -2739,7 +2821,9 @@
"slug": "promise-with-resolvers",
"subtitle": null,
"title": "Promise.withResolvers",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -2770,7 +2854,9 @@
"slug": "promisify",
"subtitle": null,
"title": "Promisify",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -2797,7 +2883,9 @@
"slug": "promisify-ii",
"subtitle": null,
"title": "Promisify II",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -2890,7 +2978,10 @@
"slug": "resumable-interval",
"subtitle": null,
"title": "Resumable Interval",
"topics": []
"topics": [
"async",
"closure"
]
},
{
"access": "premium",
@ -2971,7 +3062,9 @@
"slug": "sleep",
"subtitle": null,
"title": "Sleep",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -3001,7 +3094,9 @@
"slug": "squash-object",
"subtitle": null,
"title": "Squash Object",
"topics": []
"topics": [
"recursion"
]
},
{
"access": "premium",
@ -3033,7 +3128,9 @@
"slug": "sum",
"subtitle": null,
"title": "Sum",
"topics": []
"topics": [
"closure"
]
},
{
"access": "premium",
@ -3063,7 +3160,11 @@
"slug": "table-of-contents",
"subtitle": null,
"title": "Table of Contents",
"topics": []
"topics": [
"recursion",
"tree",
"web-api"
]
},
{
"access": "premium",
@ -3161,7 +3262,9 @@
"slug": "throttle",
"subtitle": null,
"title": "Throttle",
"topics": []
"topics": [
"async"
]
},
{
"access": "premium",
@ -3188,7 +3291,9 @@
"slug": "turtle",
"subtitle": null,
"title": "Turtle",
"topics": []
"topics": [
"oop"
]
},
{
"access": "free",

View File

@ -38,7 +38,9 @@
"slug": "make-counter-ii",
"subtitle": null,
"title": "Make Counter II",
"topics": []
"topics": [
"closure"
]
},
"skeleton": {
"js": "/**\n * @param {number} initialValue\n * @return {{get: Function, increment: Function, decrement: Function, reset: Function }}\n */\nexport default function makeCounter(initialValue = 0) {\n throw 'Not implemented';\n}",

View File

@ -39,7 +39,9 @@
"slug": "make-counter",
"subtitle": null,
"title": "Make Counter",
"topics": []
"topics": [
"closure"
]
},
"skeleton": {
"js": "/**\n * @param {number} initialValue\n * @return {Function}\n */\nexport default function makeCounter(initialValue = 0) {\n throw 'Not implemented';\n}",

View File

@ -39,7 +39,9 @@
"slug": "map-async-limit",
"subtitle": null,
"title": "Map Async Limit",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @param {Array<any>} iterable\n * @param {Function} callbackFn\n * @param {number} size\n *\n * @return {Promise}\n */\nexport default function mapAsyncLimit(iterable, callbackFn, size) {\n throw 'Not implemented';\n}",

View File

@ -41,7 +41,9 @@
"slug": "map-async",
"subtitle": null,
"title": "Map Async",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @param {Array<any>} iterable\n * @param {Function} callbackFn\n *\n * @return {Promise}\n */\nexport default function mapAsync(iterable, callbackFn) {\n throw 'Not implemented';\n}",

View File

@ -37,7 +37,9 @@
"slug": "once",
"subtitle": null,
"title": "Once",
"topics": []
"topics": [
"closure"
]
},
"skeleton": {
"js": "/**\n * @template {Function} T\n * @param {T} func\n * @return {T}\n */\nexport default function once(func) {\n throw 'Not implemented!';\n}",

View File

@ -37,7 +37,9 @@
"slug": "promise-all-settled",
"subtitle": null,
"title": "Promise.allSettled",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @param {Array} iterable\n * @return {Promise<Array<{status: 'fulfilled', value: *}|{status: 'rejected', reason: *}>>}\n */\nexport default function promiseAllSettled(iterable) {\n throw 'Not implemented!';\n}",

View File

@ -47,7 +47,9 @@
"slug": "promise-all",
"subtitle": null,
"title": "Promise.all",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @param {Array} iterable\n * @return {Promise<Array>}\n */\nexport default function promiseAll(iterable) {\n throw 'Not implemented!';\n}",

View File

@ -37,7 +37,9 @@
"slug": "promise-any",
"subtitle": null,
"title": "Promise.any",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @param {Array} iterable\n * @return {Promise}\n */\nexport default function promiseAny(iterable) {\n throw 'Not implemented!';\n}",

View File

@ -38,7 +38,9 @@
"slug": "promise-merge",
"subtitle": null,
"title": "Promise Merge",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @param {Promise} p1\n * @param {Promise} p2\n * @return {Promise<any>}\n */\nexport default function promiseMerge(p1, p2) {\n throw 'Not implemented';\n}",

View File

@ -39,7 +39,9 @@
"slug": "promise-race",
"subtitle": null,
"title": "Promise.race",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @param {Array} iterable\n * @return {Promise}\n */\nexport default function promiseRace(iterable) {\n throw 'Not implemented!';\n}",

View File

@ -39,7 +39,9 @@
"slug": "promise-reject",
"subtitle": null,
"title": "Promise.reject",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @param {*} reason\n * @returns Promise\n */\nexport default function promiseReject(reason) {\n throw 'Not implemented';\n}",

View File

@ -39,7 +39,9 @@
"slug": "promise-resolve",
"subtitle": null,
"title": "Promise.resolve",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @param {*} value\n * @returns Promise\n */\nexport default function promiseResolve(value) {\n throw 'Not implemented';\n}",

View File

@ -33,7 +33,9 @@
"slug": "promise-timeout",
"subtitle": null,
"title": "Promise Timeout",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @template T\n * @param {Promise<T>} promise\n * @param {number} duration\n * @return {Promise<T>}\n */\nexport default function promiseTimeout(promise, duration) {\n throw 'Not implemented';\n}",

View File

@ -36,7 +36,9 @@
"slug": "promise-with-resolvers",
"subtitle": null,
"title": "Promise.withResolvers",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @returns { promise: Promise, resolve: Function, reject: Function }\n */\nexport default function promiseWithResolvers() {\n throw 'Not implemented';\n}",

View File

@ -33,7 +33,9 @@
"slug": "promisify-ii",
"subtitle": null,
"title": "Promisify II",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @callback func\n * @returns Function\n */\nexport default function promisify(func) {\n throw 'Not implemented';\n}",

View File

@ -37,7 +37,9 @@
"slug": "promisify",
"subtitle": null,
"title": "Promisify",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @callback func\n * @returns Function\n */\nexport default function promisify(func) {\n throw 'Not implemented';\n}",

View File

@ -35,7 +35,10 @@
"slug": "resumable-interval",
"subtitle": null,
"title": "Resumable Interval",
"topics": []
"topics": [
"async",
"closure"
]
},
"skeleton": {
"js": "/**\n * @param {Function} callback\n * @param {number} delay\n * @param {...any} args\n * @returns {{start: Function, pause: Function, stop: Function}}\n */\nexport default function createResumableInterval(callback, delay, ...args) {\n throw 'Not implemented';\n}",

View File

@ -33,7 +33,9 @@
"slug": "sleep",
"subtitle": null,
"title": "Sleep",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @param {number} duration\n * @return {Promise<void>}\n */\nexport default async function sleep(duration) {\n throw 'Not implemented';\n}",

View File

@ -36,7 +36,9 @@
"slug": "squash-object",
"subtitle": null,
"title": "Squash Object",
"topics": []
"topics": [
"recursion"
]
},
"skeleton": {
"js": "/**\n * @param {Object} obj\n * @return {Object}\n */\nexport default function squashObject(obj) {\n throw 'Not implemented!';\n}",

View File

@ -38,7 +38,9 @@
"slug": "sum",
"subtitle": null,
"title": "Sum",
"topics": []
"topics": [
"closure"
]
},
"skeleton": {
"js": "/**\n * @param {number} value\n * @return {Function}\n */\nexport default function sum(value) {\n throw 'Not implemented!';\n}",

View File

@ -36,7 +36,11 @@
"slug": "table-of-contents",
"subtitle": null,
"title": "Table of Contents",
"topics": []
"topics": [
"recursion",
"tree",
"web-api"
]
},
"skeleton": {
"js": "/**\n * @param {Document} doc\n * @return {string}\n */\nexport default function tableOfContents(doc) {\n throw 'Not implemented!';\n}",

View File

@ -40,7 +40,9 @@
"slug": "throttle",
"subtitle": null,
"title": "Throttle",
"topics": []
"topics": [
"async"
]
},
"skeleton": {
"js": "/**\n * @callback func\n * @param {number} wait\n * @return {Function}\n */\nexport default function throttle(func, wait) {\n throw 'Not implemented!';\n}",

View File

@ -33,7 +33,9 @@
"slug": "turtle",
"subtitle": null,
"title": "Turtle",
"topics": []
"topics": [
"oop"
]
},
"skeleton": {
"js": "export default class Turtle {\n constructor() {\n throw 'Not implemented';\n }\n\n /**\n * @param {number} distance Distance to move forward while facing the current direction.\n * @return {Turtle}\n */\n forward(distance) {\n throw 'Not implemented';\n }\n\n /**\n * @param {number} distance Distance to move backward while facing the current direction.\n * @return {Turtle}\n */\n backward(distance) {\n throw 'Not implemented';\n }\n\n /**\n * Turns the turtle left.\n * @return {Turtle}\n */\n left() {\n throw 'Not implemented';\n }\n\n /**\n * Turns the turtle right.\n * @return {Turtle}\n */\n right() {\n throw 'Not implemented';\n }\n\n /**\n * @return {[number, number]} Coordinates [x, y]\n */\n position() {\n throw 'Not implemented';\n }\n}",

View File

@ -24,8 +24,8 @@
"subtitle": null,
"title": "Describe event bubbling in JavaScript and browsers",
"topics": [
"javascript",
"html"
"web-api",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/describe-event-bubbling/en-US.mdx"
},

View File

@ -24,8 +24,8 @@
"subtitle": null,
"title": "Descreva a propagação de eventos",
"topics": [
"javascript",
"html"
"web-api",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/describe-event-bubbling/pt-BR.mdx"
},

View File

@ -24,8 +24,8 @@
"subtitle": null,
"title": "描述事件冒泡过程",
"topics": [
"javascript",
"html"
"web-api",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/describe-event-bubbling/zh-CN.mdx"
},

View File

@ -24,8 +24,8 @@
"subtitle": null,
"title": "Describe event capturing in JavaScript and browsers",
"topics": [
"javascript",
"html"
"web-api",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/describe-event-capturing/en-US.mdx"
},

View File

@ -27,6 +27,7 @@
"subtitle": null,
"title": "Describe the difference between a cookie, `sessionStorage` and `localStorage` in browsers",
"topics": [
"web-api",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/describe-the-difference-between-a-cookie-sessionstorage-and-localstorage/en-US.mdx"

View File

@ -27,6 +27,7 @@
"subtitle": null,
"title": "Descreva a diferença entre cookie, `sessionStorage` e `localStorage`.",
"topics": [
"web-api",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/describe-the-difference-between-a-cookie-sessionstorage-and-localstorage/pt-BR.mdx"

View File

@ -27,6 +27,7 @@
"subtitle": null,
"title": "描述cookie、 `sessionStorage` 和 `localStorage` 之间的差异。",
"topics": [
"web-api",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/describe-the-difference-between-a-cookie-sessionstorage-and-localstorage/zh-CN.mdx"

View File

@ -24,8 +24,8 @@
"subtitle": null,
"title": "Difference between document `load` event and document `DOMContentLoaded` event?",
"topics": [
"javascript",
"html"
"html",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/difference-between-document-load-event-and-document-domcontentloaded-event/en-US.mdx"
},

View File

@ -24,8 +24,8 @@
"subtitle": null,
"title": "Qual a diferença entre o evento `load` do documento e o evento `DOMContentLoaded` do documento?",
"topics": [
"javascript",
"html"
"html",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/difference-between-document-load-event-and-document-domcontentloaded-event/pt-BR.mdx"
},

View File

@ -24,8 +24,8 @@
"subtitle": null,
"title": "Document `load` 事件和 `DOMContentLoaded` 事件之间的区别?",
"topics": [
"javascript",
"html"
"html",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/difference-between-document-load-event-and-document-domcontentloaded-event/zh-CN.mdx"
},

View File

@ -24,7 +24,8 @@
"subtitle": null,
"title": "Difference between: `function Person(){}`, `const person = Person()`, and `const person = new Person()` in JavaScript?",
"topics": [
"javascript"
"javascript",
"oop"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/difference-between-function-person-var-person-person-and-var-person-new-person/en-US.mdx"
},

View File

@ -24,7 +24,8 @@
"subtitle": null,
"title": "Diferença entre: `function Person(){}`, `var person = Person()`, e `var person = new Person()`?",
"topics": [
"javascript"
"javascript",
"oop"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/difference-between-function-person-var-person-person-and-var-person-new-person/pt-BR.mdx"
},

View File

@ -24,7 +24,8 @@
"subtitle": null,
"title": "比较差异: `function Person(){}`, `var person = Person()`, 和 `var person = new Person()`?",
"topics": [
"javascript"
"javascript",
"oop"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/difference-between-function-person-var-person-person-and-var-person-new-person/zh-CN.mdx"
},

View File

@ -25,7 +25,7 @@
"title": "Explain AJAX in as much detail as possible",
"topics": [
"javascript",
"network"
"networking"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-ajax-in-as-much-detail-as-possible/en-US.mdx"
},

View File

@ -25,7 +25,7 @@
"title": "Explique o Ajax com o máximo de detalhes possível.",
"topics": [
"javascript",
"network"
"networking"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-ajax-in-as-much-detail-as-possible/pt-BR.mdx"
},

View File

@ -25,7 +25,7 @@
"title": "尽可能详细地解释Ajax",
"topics": [
"javascript",
"network"
"networking"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-ajax-in-as-much-detail-as-possible/zh-CN.mdx"
},

View File

@ -26,8 +26,8 @@
"subtitle": null,
"title": "Explain event delegation in JavaScript",
"topics": [
"javascript",
"html"
"web-api",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-event-delegation/en-US.mdx"
},

View File

@ -26,8 +26,8 @@
"subtitle": null,
"title": "Explique delegação do evento",
"topics": [
"javascript",
"html"
"web-api",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-event-delegation/pt-BR.mdx"
},

View File

@ -26,8 +26,8 @@
"subtitle": null,
"title": "解释事件委托",
"topics": [
"javascript",
"html"
"web-api",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-event-delegation/zh-CN.mdx"
},

View File

@ -24,7 +24,8 @@
"subtitle": null,
"title": "Explain `Function.prototype.bind` in JavaScript",
"topics": [
"javascript"
"javascript",
"oop"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-function-prototype-bind/en-US.mdx"
},

View File

@ -24,7 +24,8 @@
"subtitle": null,
"title": "Explique `Function.prototype.bind`",
"topics": [
"javascript"
"javascript",
"oop"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-function-prototype-bind/pt-BR.mdx"
},

View File

@ -24,7 +24,8 @@
"subtitle": null,
"title": "解释 `Function.prototype.bind`",
"topics": [
"javascript"
"javascript",
"oop"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-function-prototype-bind/zh-CN.mdx"
},

View File

@ -24,6 +24,7 @@
"subtitle": null,
"title": "Explain how a browser determines what elements match a CSS selector.",
"topics": [
"browser",
"css"
],
"gitHubEditUrl": "https://github.com/yangshun/front-end-interview-handbook/blob/main/packages/quiz/questions/explain-how-a-browser-determines-what-elements-match-a-css-selector/en-US.mdx"

View File

@ -24,6 +24,7 @@
"subtitle": null,
"title": "Explique como um navegador determina quais elementos correspondem a um seletor CSS.",
"topics": [
"browser",
"css"
],
"gitHubEditUrl": "https://github.com/yangshun/front-end-interview-handbook/blob/main/packages/quiz/questions/explain-how-a-browser-determines-what-elements-match-a-css-selector/pt-BR.mdx"

View File

@ -24,6 +24,7 @@
"subtitle": null,
"title": "解释浏览器如何决定什么元素与 CSS 选择器匹配。",
"topics": [
"browser",
"css"
],
"gitHubEditUrl": "https://github.com/yangshun/front-end-interview-handbook/blob/main/packages/quiz/questions/explain-how-a-browser-determines-what-elements-match-a-css-selector/zh-CN.mdx"

View File

@ -25,7 +25,7 @@
"title": "Explain how JSONP works (and how it's not really Ajax)",
"topics": [
"javascript",
"network",
"networking",
"security"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-how-jsonp-works-and-how-its-not-really-ajax/en-US.mdx"

View File

@ -25,7 +25,7 @@
"title": "Explique como o JSONP funciona (e como ele não é Ajax)",
"topics": [
"javascript",
"network",
"networking",
"security"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-how-jsonp-works-and-how-its-not-really-ajax/pt-BR.mdx"

View File

@ -25,7 +25,7 @@
"title": "解释JSONP 如何工作(以及它为什么不是真正的 Ajax)",
"topics": [
"javascript",
"network",
"networking",
"security"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-how-jsonp-works-and-how-its-not-really-ajax/zh-CN.mdx"

View File

@ -24,7 +24,8 @@
"subtitle": null,
"title": "Explain how prototypal inheritance works in JavaScript",
"topics": [
"javascript"
"javascript",
"oop"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-how-prototypal-inheritance-works/en-US.mdx"
},

View File

@ -24,7 +24,8 @@
"subtitle": null,
"title": "Explique como funciona a herança de protótipos",
"topics": [
"javascript"
"javascript",
"oop"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-how-prototypal-inheritance-works/pt-BR.mdx"
},

View File

@ -24,7 +24,8 @@
"subtitle": null,
"title": "解释原型继承如何工作",
"topics": [
"javascript"
"javascript",
"oop"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-how-prototypal-inheritance-works/zh-CN.mdx"
},

View File

@ -24,7 +24,8 @@
"subtitle": null,
"title": "Explain how `this` works in JavaScript",
"topics": [
"javascript"
"javascript",
"oop"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-how-this-works-in-javascript/en-US.mdx"
},

View File

@ -24,7 +24,8 @@
"subtitle": null,
"title": "Explique como `this` funciona em JavaScript",
"topics": [
"javascript"
"javascript",
"oop"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-how-this-works-in-javascript/pt-BR.mdx"
},

View File

@ -24,7 +24,8 @@
"subtitle": null,
"title": "解释 JavaScript `this` 如何工作",
"topics": [
"javascript"
"javascript",
"oop"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-how-this-works-in-javascript/zh-CN.mdx"
},

View File

@ -24,6 +24,7 @@
"subtitle": null,
"title": "Explain the concept of a callback function in asynchronous operations",
"topics": [
"async",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-the-concept-of-a-callback-function-in-asynchronous-operations/en-US.mdx"

View File

@ -24,6 +24,7 @@
"subtitle": null,
"title": "Explain the concept of a microtask queue",
"topics": [
"async",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-the-concept-of-a-microtask-queue/en-US.mdx"

View File

@ -25,7 +25,7 @@
"title": "Explain the concept of Cross-Site Request Forgery (CSRF) and its mitigation techniques",
"topics": [
"javascript",
"network",
"networking",
"security"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-the-concept-of-cross-site-request-forgery-csrf-and-its-mitigation-techniques/en-US.mdx"

View File

@ -24,6 +24,7 @@
"subtitle": null,
"title": "Explain the concept of debouncing and throttling",
"topics": [
"async",
"javascript",
"performance"
],

View File

@ -24,7 +24,8 @@
"subtitle": null,
"title": "Explain the concept of inheritance in ES2015 classes",
"topics": [
"javascript"
"javascript",
"oop"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-the-concept-of-inheritance-in-es2015-classes/en-US.mdx"
},

View File

@ -24,6 +24,7 @@
"subtitle": null,
"title": "Explain the concept of partial application",
"topics": [
"closure",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-the-concept-of-partial-application/en-US.mdx"

View File

@ -24,7 +24,8 @@
"subtitle": null,
"title": "Explain the concept of the Prototype pattern",
"topics": [
"javascript"
"javascript",
"oop"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-the-concept-of-the-prototype-pattern/en-US.mdx"
},

View File

@ -25,7 +25,7 @@
"title": "Explain the concept of the Web Socket API",
"topics": [
"javascript",
"network"
"networking"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-the-concept-of-the-web-socket-api/en-US.mdx"
},

View File

@ -24,6 +24,8 @@
"subtitle": null,
"title": "Explain the concept of `this` binding in event handlers",
"topics": [
"closure",
"web-api",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-the-concept-of-this-binding-in-event-handlers/en-US.mdx"

View File

@ -24,7 +24,8 @@
"subtitle": null,
"title": "Explain the difference between classical inheritance and prototypal inheritance",
"topics": [
"javascript"
"javascript",
"oop"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-the-difference-between-classical-inheritance-and-prototypal-inheritance/en-US.mdx"
},

View File

@ -24,6 +24,7 @@
"subtitle": null,
"title": "Explain the difference between `document.querySelector()` and `document.getElementById()`",
"topics": [
"web-api",
"javascript",
"html"
],

View File

@ -24,6 +24,7 @@
"subtitle": null,
"title": "Explain the difference between synchronous and asynchronous functions in JavaScript",
"topics": [
"async",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-the-difference-between-synchronous-and-asynchronous-functions/en-US.mdx"

View File

@ -24,6 +24,7 @@
"subtitle": null,
"title": "Explique a diferença entre funções síncronas e assíncronas",
"topics": [
"async",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-the-difference-between-synchronous-and-asynchronous-functions/pt-BR.mdx"

View File

@ -24,6 +24,7 @@
"subtitle": null,
"title": "解释同步函数和异步函数之间的差异",
"topics": [
"async",
"javascript"
],
"gitHubEditUrl": "https://github.com/yangshun/top-javascript-interview-questions/blob/main/questions/explain-the-difference-between-synchronous-and-asynchronous-functions/zh-CN.mdx"

Some files were not shown because too many files have changed in this diff Show More