{"componentChunkName":"component---gatsby-theme-blog-src-templates-article-js","path":"/blog/articles/introduction-to-metaprogramming-in-javascript","result":{"data":{"mdx":{"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"image\": \"./images/introduction-to-metaprogramming-in-javascript/feature-image.png\",\n  \"includesMath\": false,\n  \"createdAt\": \"2016-05-27T16:29:38Z\",\n  \"updatedAt\": \"2020-07-19T09:22:05Z\",\n  \"title\": \"Metaprogramming คืออะไร? เรียนรู้การใช้งานเบื้องต้นผ่าน JavaScript\",\n  \"excerpt\": \"สอนวิธีเขียน metaprogramming ใน JavaScript ตั้งแต่ Introspection, Self-modification และ Intercession\"\n};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component '\" + name + \"' was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"\\u0E01\\u0E48\\u0E2D\\u0E19\\u0E2D\\u0E37\\u0E48\\u0E19\\u0E40\\u0E25\\u0E22\\u0E15\\u0E49\\u0E2D\\u0E07\\u0E41\\u0E08\\u0E49\\u0E07\\u0E44\\u0E27\\u0E49\\u0E01\\u0E48\\u0E2D\\u0E19\\u0E04\\u0E23\\u0E31\\u0E1A\\u0E27\\u0E48\\u0E32\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E19\\u0E46\\u0E04\\u0E19\\u0E44\\u0E2B\\u0E19\\u0E17\\u0E35\\u0E48\\u0E22\\u0E31\\u0E07\\u0E44\\u0E21\\u0E48\\u0E2A\\u0E31\\u0E19\\u0E17\\u0E31\\u0E14\\u0E01\\u0E31\\u0E1A JavaScript \\u0E21\\u0E32\\u0E01\\u0E19\\u0E31\\u0E01\\u0E04\\u0E27\\u0E23\\u0E2B\\u0E25\\u0E35\\u0E01\\u0E40\\u0E25\\u0E35\\u0E48\\u0E22\\u0E07\\u0E1A\\u0E17\\u0E04\\u0E27\\u0E32\\u0E21\\u0E19\\u0E35\\u0E49 \\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E19\\u0E46\\u0E04\\u0E19\\u0E44\\u0E2B\\u0E19\\u0E22\\u0E31\\u0E07\\u0E44\\u0E21\\u0E48\\u0E04\\u0E38\\u0E49\\u0E19\\u0E40\\u0E04\\u0E22\\u0E01\\u0E31\\u0E1A ES2015 \\u0E41\\u0E19\\u0E30\\u0E19\\u0E33\\u0E43\\u0E2B\\u0E49\\u0E2D\\u0E48\\u0E32\\u0E19 \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"http://babelcoder.com/blog/posts/introduction-to-es2015\"\n  }), \"\\u0E1E\\u0E37\\u0E49\\u0E19\\u0E10\\u0E32\\u0E19 ES2015 \\u0E2A\\u0E33\\u0E2B\\u0E23\\u0E31\\u0E1A\\u0E01\\u0E32\\u0E23\\u0E40\\u0E02\\u0E35\\u0E22\\u0E19 JavaScript \\u0E2A\\u0E21\\u0E31\\u0E22\\u0E43\\u0E2B\\u0E21\\u0E48\"), \" \\u0E01\\u0E48\\u0E2D\\u0E19 \\u0E2A\\u0E48\\u0E27\\u0E19\\u0E04\\u0E19\\u0E44\\u0E2B\\u0E19\\u0E1E\\u0E23\\u0E49\\u0E2D\\u0E21\\u0E17\\u0E31\\u0E49\\u0E07\\u0E01\\u0E32\\u0E22\\u0E41\\u0E25\\u0E30\\u0E43\\u0E08\\u0E41\\u0E25\\u0E49\\u0E27\\u0E08\\u0E30\\u0E2D\\u0E48\\u0E32\\u0E19\\u0E1A\\u0E17\\u0E04\\u0E27\\u0E32\\u0E21\\u0E19\\u0E35\\u0E49\\u0E21\\u0E32\\u0E01\\u0E01\\u0E27\\u0E48\\u0E32\\u0E2A\\u0E2D\\u0E07\\u0E23\\u0E2D\\u0E1A\\u0E01\\u0E47\\u0E44\\u0E14\\u0E49\\u0E04\\u0E23\\u0E31\\u0E1A \\u0E40\\u0E23\\u0E32\\u0E44\\u0E21\\u0E48\\u0E2B\\u0E49\\u0E32\\u0E21\\u0E14\\u0E37\\u0E48\\u0E21\\u0E40\\u0E01\\u0E34\\u0E19\\u0E27\\u0E31\\u0E19\\u0E25\\u0E30\\u0E2A\\u0E2D\\u0E07\\u0E02\\u0E27\\u0E14\\u0E41\\u0E1A\\u0E1A\\u0E25\\u0E34\\u0E42\\u0E1E!\"), mdx(\"h2\", null, \"\\u0E40\\u0E1E\\u0E23\\u0E32\\u0E30\\u0E42\\u0E1B\\u0E23\\u0E41\\u0E01\\u0E23\\u0E21\\u0E40\\u0E21\\u0E2D\\u0E23\\u0E4C\\u0E19\\u0E31\\u0E49\\u0E19\\u0E02\\u0E35\\u0E49\\u0E40\\u0E01\\u0E35\\u0E22\\u0E08\"), mdx(\"p\", null, \"\\u0E1A\\u0E17\\u0E04\\u0E27\\u0E32\\u0E21\\u0E02\\u0E2D\\u0E07 Babel Coder \\u0E19\\u0E31\\u0E49\\u0E19\\u0E21\\u0E35\\u0E2A\\u0E32\\u0E21\\u0E2A\\u0E16\\u0E32\\u0E19\\u0E30\\u0E04\\u0E37\\u0E2D drafted, published \\u0E41\\u0E25\\u0E30 upcoming \\u0E14\\u0E31\\u0E07\\u0E19\\u0E31\\u0E49\\u0E19\\u0E16\\u0E49\\u0E32\\u0E40\\u0E23\\u0E32\\u0E15\\u0E49\\u0E2D\\u0E07\\u0E01\\u0E32\\u0E23\\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07\\u0E40\\u0E21\\u0E18\\u0E2D\\u0E14\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E15\\u0E23\\u0E27\\u0E08\\u0E2A\\u0E2D\\u0E1A\\u0E2A\\u0E16\\u0E32\\u0E19\\u0E30\\u0E02\\u0E2D\\u0E07\\u0E1A\\u0E17\\u0E04\\u0E27\\u0E32\\u0E21 \\u0E40\\u0E23\\u0E32\\u0E15\\u0E49\\u0E2D\\u0E07\\u0E19\\u0E34\\u0E22\\u0E32\\u0E21\\u0E2A\\u0E32\\u0E21\\u0E40\\u0E21\\u0E18\\u0E2D\\u0E14\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E41\\u0E17\\u0E19\\u0E41\\u0E15\\u0E48\\u0E25\\u0E30\\u0E2A\\u0E16\\u0E32\\u0E19\\u0E30\\u0E14\\u0E31\\u0E07\\u0E19\\u0E35\\u0E49\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-javascript\"\n  }), \"class Article {\\n  static statuses = ['drafted', 'published', 'upcoming']\\n\\n  constructor(status) {\\n    this.status = status\\n  }\\n\\n  isDrafted() {\\n    return this.status === 'drafted'\\n  }\\n\\n  isPublished() {\\n    return this.status === 'published'\\n  }\\n\\n  isUpcoming() {\\n    return this.status === 'upcoming'\\n  }\\n}\\n\\nconst article = new Article('drafted')\\nconsole.log(article.isDrafted()) // true\\nconsole.log(article.isPublished()) // false\\n\")), mdx(\"p\", null, \"\\u0E08\\u0E32\\u0E01\\u0E15\\u0E31\\u0E27\\u0E2D\\u0E22\\u0E48\\u0E32\\u0E07\\u0E02\\u0E49\\u0E32\\u0E07\\u0E1A\\u0E19\\u0E40\\u0E23\\u0E32\\u0E1E\\u0E1A\\u0E27\\u0E48\\u0E32\\u0E40\\u0E21\\u0E18\\u0E2D\\u0E14\\u0E17\\u0E31\\u0E49\\u0E07\\u0E2A\\u0E32\\u0E21\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E1E\\u0E35\\u0E48\\u0E19\\u0E49\\u0E2D\\u0E07\\u0E23\\u0E48\\u0E27\\u0E21\\u0E2A\\u0E32\\u0E1A\\u0E32\\u0E19\\u0E17\\u0E35\\u0E48\\u0E21\\u0E35\\u0E2B\\u0E19\\u0E49\\u0E32\\u0E15\\u0E32\\u0E40\\u0E2B\\u0E21\\u0E37\\u0E2D\\u0E19\\u0E01\\u0E31\\u0E19 \\u0E04\\u0E37\\u0E2D\\u0E1B\\u0E23\\u0E30\\u0E01\\u0E2D\\u0E1A\\u0E14\\u0E49\\u0E27\\u0E22 is \\u0E1A\\u0E27\\u0E01\\u0E14\\u0E49\\u0E27\\u0E22\\u0E0A\\u0E37\\u0E48\\u0E2D\\u0E2A\\u0E16\\u0E32\\u0E19\\u0E30\\u0E40\\u0E1E\\u0E35\\u0E22\\u0E07\\u0E41\\u0E15\\u0E48\\u0E2D\\u0E31\\u0E01\\u0E29\\u0E23\\u0E15\\u0E31\\u0E27\\u0E41\\u0E23\\u0E01\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E15\\u0E31\\u0E27\\u0E43\\u0E2B\\u0E0D\\u0E48 \\u0E42\\u0E2D\\u0E4A\\u0E30\\u0E42\\u0E2D \\u0E17\\u0E31\\u0E49\\u0E07\\u0E46\\u0E17\\u0E35\\u0E48\\u0E40\\u0E23\\u0E32\\u0E1B\\u0E23\\u0E30\\u0E01\\u0E32\\u0E28\\u0E43\\u0E19\\u0E1A\\u0E23\\u0E23\\u0E17\\u0E31\\u0E14\\u0E17\\u0E35\\u0E482\\u0E41\\u0E25\\u0E49\\u0E27\\u0E27\\u0E48\\u0E32\\u0E2A\\u0E16\\u0E32\\u0E19\\u0E30\\u0E17\\u0E31\\u0E49\\u0E07\\u0E2B\\u0E21\\u0E14\\u0E02\\u0E2D\\u0E07\\u0E40\\u0E23\\u0E32\\u0E21\\u0E35\\u0E2A\\u0E32\\u0E21\\u0E04\\u0E48\\u0E32 \\u0E40\\u0E23\\u0E32\\u0E43\\u0E0A\\u0E49\\u0E1B\\u0E23\\u0E30\\u0E42\\u0E22\\u0E0A\\u0E19\\u0E4C\\u0E08\\u0E32\\u0E01\\u0E2A\\u0E48\\u0E27\\u0E19\\u0E19\\u0E35\\u0E49\\u0E44\\u0E21\\u0E48\\u0E44\\u0E14\\u0E49\\u0E2B\\u0E23\\u0E2D \\u0E41\\u0E17\\u0E19\\u0E17\\u0E35\\u0E48\\u0E08\\u0E30\\u0E15\\u0E49\\u0E2D\\u0E07\\u0E21\\u0E32\\u0E19\\u0E31\\u0E48\\u0E07\\u0E1B\\u0E23\\u0E30\\u0E01\\u0E32\\u0E28\\u0E40\\u0E21\\u0E18\\u0E2D\\u0E14\\u0E43\\u0E2B\\u0E21\\u0E48\\u0E15\\u0E31\\u0E49\\u0E07\\u0E2A\\u0E32\\u0E21\\u0E15\\u0E31\\u0E27 \\u0E19\\u0E35\\u0E48\\u0E41\\u0E2B\\u0E25\\u0E30\\u0E04\\u0E23\\u0E31\\u0E1A\\u0E04\\u0E27\\u0E32\\u0E21\\u0E02\\u0E35\\u0E49\\u0E40\\u0E01\\u0E35\\u0E22\\u0E08\\u0E02\\u0E2D\\u0E07\\u0E42\\u0E1B\\u0E23\\u0E41\\u0E01\\u0E23\\u0E21\\u0E40\\u0E21\\u0E2D\\u0E23\\u0E4C \\u0E40\\u0E2D\\u0E32\\u0E2B\\u0E25\\u0E30\\u0E25\\u0E2D\\u0E07\\u0E1E\\u0E22\\u0E32\\u0E22\\u0E32\\u0E21\\u0E2D\\u0E35\\u0E01\\u0E04\\u0E23\\u0E31\\u0E49\\u0E07\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-javascript\"\n  }), \"// \\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07\\u0E1F\\u0E31\\u0E07\\u0E01\\u0E4C\\u0E0A\\u0E31\\u0E19\\u0E02\\u0E36\\u0E49\\u0E19\\u0E21\\u0E32\\u0E2D\\u0E31\\u0E19\\u0E19\\u0E36\\u0E07\\u0E21\\u0E35\\u0E2B\\u0E19\\u0E49\\u0E32\\u0E17\\u0E35\\u0E48\\u0E41\\u0E1B\\u0E25\\u0E07\\u0E02\\u0E49\\u0E2D\\u0E04\\u0E27\\u0E32\\u0E21\\u0E43\\u0E2B\\u0E49\\u0E15\\u0E31\\u0E27\\u0E41\\u0E23\\u0E01\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E2D\\u0E31\\u0E01\\u0E29\\u0E23\\u0E15\\u0E31\\u0E27\\u0E43\\u0E2B\\u0E0D\\u0E48\\n// \\u0E40\\u0E0A\\u0E48\\u0E19\\u0E40\\u0E1B\\u0E25\\u0E35\\u0E48\\u0E22\\u0E19\\u0E08\\u0E32\\u0E01 upcoming \\u0E40\\u0E1B\\u0E47\\u0E19 Upcoming\\nconst capitalize = (text) => {\\n  return text.charAt(0).toUpperCase() + text.slice(1)\\n}\\n\\nclass Article {\\n  static statuses = ['drafted', 'published', 'upcoming']\\n\\n  constructor(status) {\\n    this.status = status\\n  }\\n}\\n\\n// \\u0E40\\u0E21\\u0E37\\u0E48\\u0E2D\\u0E40\\u0E23\\u0E32\\u0E21\\u0E35\\u0E2D\\u0E32\\u0E23\\u0E4C\\u0E40\\u0E23\\u0E22\\u0E4C\\u0E02\\u0E2D\\u0E07\\u0E2A\\u0E16\\u0E32\\u0E19\\u0E30\\u0E17\\u0E31\\u0E49\\u0E07\\u0E2B\\u0E25\\u0E32\\u0E22\\u0E41\\u0E25\\u0E49\\u0E27\\u0E08\\u0E30\\u0E23\\u0E2D\\u0E0A\\u0E49\\u0E32\\u0E2D\\u0E22\\u0E39\\u0E48\\u0E43\\u0E22\\n// \\u0E27\\u0E19\\u0E25\\u0E39\\u0E1B\\u0E23\\u0E2D\\u0E1A\\u0E21\\u0E31\\u0E19\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07\\u0E40\\u0E21\\u0E18\\u0E2D\\u0E14\\u0E15\\u0E32\\u0E21\\u0E08\\u0E33\\u0E19\\u0E27\\u0E19\\u0E2A\\u0E16\\u0E32\\u0E19\\u0E30\\u0E17\\u0E35\\u0E48\\u0E40\\u0E23\\u0E32\\u0E21\\u0E35\\nArticle.statuses.forEach((status) => {\\n  // \\u0E41\\u0E1B\\u0E30\\u0E40\\u0E21\\u0E18\\u0E2D\\u0E14\\u0E17\\u0E35\\u0E48\\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07\\u0E43\\u0E2B\\u0E21\\u0E48\\u0E40\\u0E02\\u0E49\\u0E32\\u0E44\\u0E1B\\u0E43\\u0E19\\u0E43\\u0E19 prototype\\n  // \\u0E43\\u0E04\\u0E23\\u0E44\\u0E21\\u0E48\\u0E23\\u0E39\\u0E49\\u0E08\\u0E31\\u0E01 prototype \\u0E44\\u0E21\\u0E48\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E44\\u0E23\\u0E04\\u0E23\\u0E31\\u0E1A \\u0E25\\u0E37\\u0E21\\u0E21\\u0E31\\u0E19\\u0E44\\u0E1B\\u0E0B\\u0E30\\n  // \\u0E04\\u0E34\\u0E14\\u0E0B\\u0E30\\u0E27\\u0E48\\u0E32\\u0E19\\u0E35\\u0E48\\u0E04\\u0E37\\u0E2D\\u0E27\\u0E34\\u0E18\\u0E35\\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07\\u0E40\\u0E21\\u0E18\\u0E2D\\u0E14\\u0E2D\\u0E35\\u0E01\\u0E27\\u0E34\\u0E18\\u0E35\\u0E2B\\u0E19\\u0E36\\u0E48\\u0E07\\u0E43\\u0E19 JavaScript \\u0E41\\u0E25\\u0E49\\u0E27\\u0E01\\u0E31\\u0E19\\n  Article.prototype[`is${capitalize(status)}`] = function () {\\n    return this.status === status\\n  }\\n})\\n\\nconst article = new Article('drafted')\\nconsole.log(article.isDrafted()) // true\\nconsole.log(article.isPublished()) // false\\n\")), mdx(\"p\", null, \"\\u0E15\\u0E2D\\u0E19\\u0E19\\u0E35\\u0E49\\u0E42\\u0E04\\u0E4A\\u0E14\\u0E02\\u0E2D\\u0E07\\u0E40\\u0E23\\u0E32\\u0E14\\u0E39\\u0E21\\u0E35\\u0E0A\\u0E31\\u0E49\\u0E19\\u0E40\\u0E0A\\u0E34\\u0E07\\u0E21\\u0E32\\u0E01\\u0E02\\u0E36\\u0E49\\u0E19 \\u0E41\\u0E04\\u0E48\\u0E27\\u0E19\\u0E25\\u0E39\\u0E1B\\u0E0A\\u0E35\\u0E27\\u0E34\\u0E15\\u0E01\\u0E47\\u0E40\\u0E1B\\u0E25\\u0E35\\u0E48\\u0E22\\u0E19 \\u0E0A\\u0E48\\u0E32\\u0E07\\u0E15\\u0E2D\\u0E1A\\u0E2A\\u0E19\\u0E2D\\u0E07\\u0E04\\u0E27\\u0E32\\u0E21\\u0E2A\\u0E31\\u0E19\\u0E2B\\u0E25\\u0E31\\u0E07\\u0E22\\u0E32\\u0E27\\u0E02\\u0E2D\\u0E07\\u0E1E\\u0E27\\u0E01\\u0E40\\u0E23\\u0E32\\u0E0A\\u0E32\\u0E27\\u0E42\\u0E1B\\u0E23\\u0E41\\u0E01\\u0E23\\u0E21\\u0E40\\u0E21\\u0E2D\\u0E23\\u0E4C\\u0E40\\u0E2A\\u0E35\\u0E22\\u0E19\\u0E35\\u0E48\\u0E01\\u0E23\\u0E30\\u0E44\\u0E23 (\\u0E2B\\u0E23\\u0E37\\u0E2D\\u0E21\\u0E35\\u0E1C\\u0E21\\u0E04\\u0E19\\u0E40\\u0E14\\u0E35\\u0E22\\u0E27\\u0E17\\u0E35\\u0E48\\u0E02\\u0E35\\u0E49\\u0E40\\u0E01\\u0E35\\u0E22\\u0E08\\u0E41\\u0E2E\\u0E30 T\", \"_\", \"_\", \"T)\"), mdx(\"h2\", null, \"Metaprogramming \\u0E04\\u0E37\\u0E2D\\u0E2D\\u0E30\\u0E44\\u0E23?\"), mdx(\"p\", null, \"\\u0E01\\u0E48\\u0E2D\\u0E19\\u0E08\\u0E30\\u0E40\\u0E02\\u0E49\\u0E32\\u0E43\\u0E08\\u0E04\\u0E27\\u0E32\\u0E21\\u0E2B\\u0E21\\u0E32\\u0E22\\u0E43\\u0E19\\u0E2A\\u0E48\\u0E27\\u0E19\\u0E25\\u0E36\\u0E01 \\u0E40\\u0E23\\u0E32\\u0E25\\u0E2D\\u0E07\\u0E21\\u0E32\\u0E41\\u0E22\\u0E01\\u0E04\\u0E33\\u0E27\\u0E48\\u0E32 meta \\u0E2D\\u0E2D\\u0E01\\u0E08\\u0E32\\u0E01 programming \\u0E01\\u0E31\\u0E19\\u0E01\\u0E48\\u0E2D\\u0E19\\u0E04\\u0E23\\u0E31\\u0E1A \\u0E2B\\u0E25\\u0E31\\u0E07\\u0E08\\u0E32\\u0E01\\u0E04\\u0E38\\u0E49\\u0E22\\u0E27\\u0E34\\u0E01\\u0E34\\u0E1E\\u0E35\\u0E40\\u0E14\\u0E35\\u0E22\\u0E1E\\u0E1A\\u0E27\\u0E48\\u0E32 meta \\u0E40\\u0E1B\\u0E47\\u0E19\\u0E04\\u0E33\\u0E20\\u0E32\\u0E29\\u0E32\\u0E01\\u0E23\\u0E35\\u0E01\\u0E41\\u0E1B\\u0E25\\u0E27\\u0E48\\u0E32\\u0E22\\u0E34\\u0E48\\u0E07\\u0E43\\u0E2B\\u0E0D\\u0E48 \\u0E08\\u0E36\\u0E07\\u0E44\\u0E21\\u0E48\\u0E19\\u0E48\\u0E32\\u0E41\\u0E1B\\u0E25\\u0E01\\u0E43\\u0E08\\u0E17\\u0E35\\u0E48 Metaphysics \\u0E08\\u0E30\\u0E2B\\u0E21\\u0E32\\u0E22\\u0E16\\u0E36\\u0E07\\u0E2D\\u0E20\\u0E34\\u0E1B\\u0E23\\u0E31\\u0E0A\\u0E0D\\u0E32 \\u0E2A\\u0E48\\u0E27\\u0E19 metaprogramming \\u0E19\\u0E31\\u0E49\\u0E19\\u0E08\\u0E36\\u0E07\\u0E19\\u0E48\\u0E32\\u0E08\\u0E30\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E01\\u0E32\\u0E23\\u0E40\\u0E02\\u0E35\\u0E22\\u0E19\\u0E42\\u0E1B\\u0E23\\u0E41\\u0E01\\u0E23\\u0E21\\u0E17\\u0E35\\u0E48\\u0E40\\u0E27\\u0E2D\\u0E23\\u0E4C\\u0E27\\u0E31\\u0E07\\u0E2D\\u0E25\\u0E31\\u0E07\\u0E01\\u0E32\\u0E23 \\u0E41\\u0E25\\u0E49\\u0E27\\u0E41\\u0E1A\\u0E1A\\u0E44\\u0E2B\\u0E19\\u0E2B\\u0E25\\u0E30\\u0E17\\u0E35\\u0E48\\u0E40\\u0E23\\u0E35\\u0E22\\u0E01\\u0E27\\u0E48\\u0E32\\u0E22\\u0E34\\u0E48\\u0E07\\u0E43\\u0E2B\\u0E0D\\u0E48\\u0E2A\\u0E33\\u0E2B\\u0E23\\u0E31\\u0E1A\\u0E01\\u0E32\\u0E23\\u0E40\\u0E02\\u0E35\\u0E22\\u0E19\\u0E42\\u0E1B\\u0E23\\u0E41\\u0E01\\u0E23\\u0E21?\"), mdx(\"p\", null, \"Metaprogramming \\u0E04\\u0E37\\u0E2D\\u0E40\\u0E17\\u0E04\\u0E19\\u0E34\\u0E04\\u0E01\\u0E32\\u0E23\\u0E40\\u0E02\\u0E35\\u0E22\\u0E19\\u0E42\\u0E1B\\u0E23\\u0E41\\u0E01\\u0E23\\u0E21\\u0E41\\u0E1A\\u0E1A\\u0E2B\\u0E19\\u0E36\\u0E48\\u0E07\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07\\u0E42\\u0E04\\u0E4A\\u0E14\\u0E2B\\u0E23\\u0E37\\u0E2D\\u0E42\\u0E1B\\u0E23\\u0E41\\u0E01\\u0E23\\u0E21\\u0E17\\u0E35\\u0E48\\u0E08\\u0E30\\u0E44\\u0E1B\\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07/\\u0E40\\u0E1B\\u0E25\\u0E35\\u0E48\\u0E22\\u0E19\\u0E41\\u0E1B\\u0E25\\u0E07/\\u0E27\\u0E34\\u0E40\\u0E04\\u0E23\\u0E32\\u0E30\\u0E2B\\u0E4C\\u0E42\\u0E04\\u0E4A\\u0E14\\u0E2B\\u0E23\\u0E37\\u0E2D\\u0E42\\u0E1B\\u0E23\\u0E41\\u0E01\\u0E23\\u0E21\\u0E02\\u0E36\\u0E49\\u0E19\\u0E21\\u0E32\\u0E2D\\u0E35\\u0E01\\u0E17\\u0E35 \\u0E25\\u0E2D\\u0E07\\u0E1E\\u0E34\\u0E08\\u0E32\\u0E23\\u0E13\\u0E32\\u0E2A\\u0E16\\u0E32\\u0E19\\u0E30\\u0E02\\u0E2D\\u0E07\\u0E1A\\u0E17\\u0E04\\u0E27\\u0E32\\u0E21\\u0E43\\u0E19\\u0E15\\u0E31\\u0E27\\u0E2D\\u0E22\\u0E48\\u0E32\\u0E07\\u0E17\\u0E35\\u0E48\\u0E41\\u0E25\\u0E49\\u0E27\\u0E04\\u0E23\\u0E31\\u0E1A \\u0E1C\\u0E21\\u0E40\\u0E02\\u0E35\\u0E22\\u0E19\\u0E42\\u0E1B\\u0E23\\u0E41\\u0E01\\u0E23\\u0E21\\u0E02\\u0E36\\u0E49\\u0E19\\u0E21\\u0E32\\u0E0A\\u0E38\\u0E14\\u0E19\\u0E36\\u0E07 \\u0E41\\u0E25\\u0E49\\u0E27\\u0E42\\u0E1B\\u0E23\\u0E41\\u0E01\\u0E23\\u0E21\\u0E0A\\u0E38\\u0E14\\u0E19\\u0E35\\u0E49\\u0E08\\u0E30\\u0E44\\u0E1B\\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07\\u0E40\\u0E21\\u0E18\\u0E2D\\u0E14\\u0E02\\u0E36\\u0E49\\u0E19\\u0E21\\u0E32\\u0E2D\\u0E35\\u0E01\\u0E17\\u0E35\\u0E19\\u0E36\\u0E07 \\u0E08\\u0E36\\u0E07\\u0E08\\u0E31\\u0E14\\u0E40\\u0E1B\\u0E47\\u0E19 metaprogramming \\u0E40\\u0E1E\\u0E23\\u0E32\\u0E30\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E01\\u0E32\\u0E23\\u0E40\\u0E02\\u0E35\\u0E22\\u0E19\\u0E42\\u0E1B\\u0E23\\u0E41\\u0E01\\u0E23\\u0E21\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E43\\u0E2B\\u0E49\\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07\\u0E42\\u0E1B\\u0E23\\u0E41\\u0E01\\u0E23\\u0E21\\u0E02\\u0E36\\u0E49\\u0E19\\u0E21\\u0E32\\u0E2D\\u0E35\\u0E01\\u0E17\\u0E35\\u0E2B\\u0E19\\u0E36\\u0E48\\u0E07\"), mdx(\"h2\", null, \"Metaprogramming \\u0E43\\u0E19 JavaScript\"), mdx(\"p\", null, \"Metaprogramming \\u0E43\\u0E19 JavaScript \\u0E19\\u0E31\\u0E49\\u0E19\\u0E2A\\u0E32\\u0E21\\u0E32\\u0E23\\u0E16\\u0E41\\u0E1A\\u0E48\\u0E07\\u0E2B\\u0E25\\u0E31\\u0E01\\u0E46\\u0E44\\u0E14\\u0E49\\u0E40\\u0E1B\\u0E47\\u0E193\\u0E1B\\u0E23\\u0E30\\u0E40\\u0E20\\u0E17 \\u0E14\\u0E31\\u0E07\\u0E19\\u0E35\\u0E49\"), mdx(\"h3\", null, \"1. Introspection\"), mdx(\"p\", null, \"\\u0E40\\u0E15\\u0E37\\u0E2D\\u0E19\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E19\\u0E46\\u0E44\\u0E27\\u0E49\\u0E01\\u0E48\\u0E2D\\u0E19\\u0E04\\u0E23\\u0E31\\u0E1A\\u0E27\\u0E48\\u0E32\\u0E2D\\u0E22\\u0E48\\u0E32\\u0E1E\\u0E22\\u0E32\\u0E22\\u0E32\\u0E21\\u0E2B\\u0E32\\u0E04\\u0E27\\u0E32\\u0E21\\u0E2B\\u0E21\\u0E32\\u0E22\\u0E02\\u0E2D\\u0E07\\u0E04\\u0E33\\u0E19\\u0E35\\u0E49\\u0E08\\u0E32\\u0E01 Google translate \\u0E40\\u0E1E\\u0E23\\u0E32\\u0E30\\u0E2A\\u0E34\\u0E48\\u0E07\\u0E17\\u0E35\\u0E48\\u0E04\\u0E38\\u0E13\\u0E08\\u0E30\\u0E44\\u0E14\\u0E49\\u0E04\\u0E37\\u0E2D \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"\\u0E27\\u0E34\\u0E1B\\u0E31\\u0E2A\\u0E2A\\u0E19\\u0E32\"), \" \\u0E2B\\u0E37\\u0E21? introspection \\u0E04\\u0E37\\u0E2D\\u0E04\\u0E27\\u0E32\\u0E21\\u0E2A\\u0E32\\u0E21\\u0E32\\u0E23\\u0E16\\u0E43\\u0E19\\u0E01\\u0E32\\u0E23\\u0E40\\u0E02\\u0E49\\u0E32\\u0E16\\u0E36\\u0E07\\u0E42\\u0E04\\u0E4A\\u0E14\\u0E2B\\u0E23\\u0E37\\u0E2D\\u0E02\\u0E49\\u0E2D\\u0E21\\u0E39\\u0E25\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u0E42\\u0E14\\u0E22\\u0E44\\u0E21\\u0E48\\u0E40\\u0E1B\\u0E25\\u0E35\\u0E48\\u0E22\\u0E19\\u0E41\\u0E1B\\u0E25\\u0E07\\u0E1C\\u0E25\\u0E25\\u0E31\\u0E1E\\u0E18\\u0E4C\\u0E02\\u0E2D\\u0E07\\u0E42\\u0E04\\u0E4A\\u0E14\\u0E15\\u0E49\\u0E19\\u0E09\\u0E1A\\u0E31\\u0E1A\")), mdx(\"h4\", null, \"Introspection \\u0E01\\u0E25\\u0E38\\u0E48\\u0E21\\u0E1F\\u0E31\\u0E07\\u0E01\\u0E4C\\u0E0A\\u0E31\\u0E19\"), mdx(\"p\", null, \"\\u0E1F\\u0E31\\u0E07\\u0E01\\u0E4C\\u0E0A\\u0E31\\u0E19\\u0E43\\u0E19 JavaScript \\u0E19\\u0E31\\u0E49\\u0E19\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E2D\\u0E47\\u0E2D\\u0E1A\\u0E40\\u0E08\\u0E47\\u0E01\\u0E15\\u0E4C \\u0E14\\u0E31\\u0E07\\u0E19\\u0E31\\u0E49\\u0E19\\u0E15\\u0E31\\u0E27\\u0E1F\\u0E31\\u0E07\\u0E01\\u0E4C\\u0E0A\\u0E31\\u0E19\\u0E40\\u0E2D\\u0E07\\u0E08\\u0E36\\u0E07\\u0E21\\u0E35\\u0E40\\u0E21\\u0E18\\u0E2D\\u0E14\\u0E43\\u0E2B\\u0E49\\u0E40\\u0E23\\u0E32\\u0E40\\u0E23\\u0E35\\u0E22\\u0E01\\u0E43\\u0E0A\\u0E49\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E40\\u0E02\\u0E49\\u0E32\\u0E16\\u0E36\\u0E07\\u0E02\\u0E49\\u0E2D\\u0E21\\u0E39\\u0E25 metadata \\u0E02\\u0E2D\\u0E07\\u0E15\\u0E31\\u0E27\\u0E1F\\u0E31\\u0E07\\u0E01\\u0E4C\\u0E0A\\u0E31\\u0E19 \\u0E01\\u0E25\\u0E38\\u0E48\\u0E21\\u0E02\\u0E2D\\u0E07\\u0E40\\u0E21\\u0E18\\u0E2D\\u0E14\\u0E40\\u0E2B\\u0E25\\u0E48\\u0E32\\u0E19\\u0E35\\u0E49\\u0E40\\u0E2D\\u0E07\\u0E04\\u0E23\\u0E31\\u0E1A\\u0E17\\u0E35\\u0E48\\u0E40\\u0E1B\\u0E47\\u0E19 introspection\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-javascript\"\n  }), \"function print(firstName, lastName) {\\n  console.log(`${firstName} ${lastName}`)\\n}\\n\\nconsole.log(typeof print) // function\\n\\n// function \\u0E19\\u0E31\\u0E49\\u0E19\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E2D\\u0E47\\u0E2D\\u0E1A\\u0E40\\u0E08\\u0E47\\u0E01\\u0E15\\u0E4C\\u0E0A\\u0E19\\u0E34\\u0E14\\u0E2B\\u0E19\\u0E36\\u0E48\\u0E07\\nconsole.log(print instanceof Object) // true\\n\\n// \\u0E40\\u0E02\\u0E49\\u0E32\\u0E16\\u0E36\\u0E07\\u0E0A\\u0E37\\u0E48\\u0E2D\\u0E02\\u0E2D\\u0E07\\u0E1F\\u0E31\\u0E07\\u0E01\\u0E4C\\u0E0A\\u0E31\\u0E19\\nconsole.log(print.name) // print\\n\\n// \\u0E40\\u0E02\\u0E49\\u0E32\\u0E16\\u0E36\\u0E07\\u0E02\\u0E49\\u0E2D\\u0E21\\u0E39\\u0E25\\u0E27\\u0E48\\u0E32\\u0E1F\\u0E31\\u0E07\\u0E01\\u0E4C\\u0E0A\\u0E31\\u0E19\\u0E14\\u0E31\\u0E07\\u0E01\\u0E25\\u0E48\\u0E32\\u0E27\\u0E23\\u0E31\\u0E1A arguments \\u0E01\\u0E35\\u0E48\\u0E15\\u0E31\\u0E27\\nconsole.log(print.length) // 2\\n\")), mdx(\"h4\", null, \"Introspection \\u0E01\\u0E25\\u0E38\\u0E48\\u0E21\\u0E2D\\u0E47\\u0E2D\\u0E1A\\u0E40\\u0E08\\u0E47\\u0E01\\u0E15\\u0E4C\"), mdx(\"p\", null, \"introspection \\u0E43\\u0E19\\u0E01\\u0E25\\u0E38\\u0E48\\u0E21\\u0E2D\\u0E47\\u0E2D\\u0E1A\\u0E40\\u0E08\\u0E47\\u0E01\\u0E15\\u0E4C\\u0E19\\u0E31\\u0E49\\u0E19\\u0E40\\u0E23\\u0E32\\u0E43\\u0E0A\\u0E49\\u0E1A\\u0E48\\u0E2D\\u0E22\\u0E21\\u0E32\\u0E01 \\u0E42\\u0E14\\u0E22\\u0E40\\u0E09\\u0E1E\\u0E32\\u0E30\\u0E43\\u0E19\\u0E2A\\u0E21\\u0E31\\u0E22 ES5 \\u0E17\\u0E35\\u0E48\\u0E40\\u0E23\\u0E32\\u0E15\\u0E49\\u0E2D\\u0E07\\u0E01\\u0E32\\u0E23\\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07 OOP \\u0E1A\\u0E19 JavaScript \\u0E1C\\u0E48\\u0E32\\u0E19 prototype \\u0E15\\u0E31\\u0E27\\u0E2D\\u0E22\\u0E48\\u0E32\\u0E07\\u0E40\\u0E0A\\u0E48\\u0E19\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-javascript\"\n  }), \"const obj = {\\n  firstName: 'Nuttavut',\\n  lastName: 'thongjor',\\n}\\n\\nObject.keys(obj) // [\\\"firstName\\\",\\\"lastName\\\"]\\nObject.values(obj) // [\\\"Nuttavut\\\",\\\"thongjor\\\"]\\nObject.entries(obj) // [[\\\"firstName\\\",\\\"Nuttavut\\\"],[\\\"lastName\\\",\\\"thongjor\\\"]]\\n\\n// \\u0E02\\u0E2D\\u0E02\\u0E49\\u0E2D\\u0E21\\u0E39\\u0E25\\u0E02\\u0E2D\\u0E07 property \\u0E17\\u0E35\\u0E48\\u0E23\\u0E30\\u0E1A\\u0E38\\nObject.getOwnPropertyDescriptor(obj, 'firstName') // {\\\"value\\\":\\\"Nuttavut\\\",\\\"writable\\\":true,\\\"enumerable\\\":true,\\\"configurable\\\":true}\\n\")), mdx(\"h3\", null, \"Introspection \\u0E01\\u0E25\\u0E38\\u0E48\\u0E21 operators \\u0E2B\\u0E23\\u0E37\\u0E2D\\u0E01\\u0E32\\u0E23\\u0E14\\u0E33\\u0E40\\u0E19\\u0E34\\u0E19\\u0E01\\u0E32\\u0E23\"), mdx(\"p\", null, \"introspection \\u0E01\\u0E25\\u0E38\\u0E48\\u0E21\\u0E19\\u0E35\\u0E49\\u0E44\\u0E14\\u0E49\\u0E41\\u0E01\\u0E48 typeof \\u0E41\\u0E25\\u0E30 instanceof\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-javascript\"\n  }), \"const obj = {}\\n\\nconsole.log(typeof obj) // object\\nconsole.log(obj instanceof Object) // true\\n\")), mdx(\"h3\", null, \"2. Self-modification\"), mdx(\"p\", null, \"Metaprogramming \\u0E01\\u0E25\\u0E38\\u0E48\\u0E21\\u0E19\\u0E35\\u0E49\\u0E43\\u0E0A\\u0E49\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E41\\u0E01\\u0E49\\u0E44\\u0E02\\u0E02\\u0E49\\u0E2D\\u0E21\\u0E39\\u0E25\\u0E2B\\u0E23\\u0E37\\u0E2D\\u0E2A\\u0E48\\u0E27\\u0E19\\u0E02\\u0E2D\\u0E07\\u0E42\\u0E04\\u0E4A\\u0E14 \\u0E15\\u0E31\\u0E27\\u0E2D\\u0E22\\u0E48\\u0E32\\u0E07\\u0E40\\u0E0A\\u0E48\\u0E19 delete \\u0E17\\u0E35\\u0E48\\u0E40\\u0E1B\\u0E47\\u0E19 operator \\u0E14\\u0E33\\u0E40\\u0E19\\u0E34\\u0E19\\u0E01\\u0E32\\u0E23\\u0E2A\\u0E33\\u0E2B\\u0E23\\u0E31\\u0E1A\\u0E25\\u0E1A property \\u0E17\\u0E35\\u0E48\\u0E44\\u0E21\\u0E48\\u0E15\\u0E49\\u0E2D\\u0E07\\u0E01\\u0E32\\u0E23\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-javascript\"\n  }), \"// \\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07\\u0E1F\\u0E31\\u0E07\\u0E01\\u0E4C\\u0E0A\\u0E31\\u0E19\\u0E2A\\u0E33\\u0E2B\\u0E23\\u0E31\\u0E1A\\u0E22\\u0E49\\u0E32\\u0E22 property \\u0E17\\u0E31\\u0E49\\u0E07\\u0E2B\\u0E21\\u0E14\\u0E02\\u0E2D\\u0E07\\u0E2D\\u0E47\\u0E2D\\u0E1A\\u0E40\\u0E08\\u0E47\\u0E01\\u0E15\\u0E4C\\u0E2B\\u0E19\\u0E36\\u0E48\\u0E07\\u0E44\\u0E1B\\u0E22\\u0E31\\u0E07\\u0E2D\\u0E35\\u0E01\\u0E15\\u0E31\\u0E27\\u0E2B\\u0E19\\u0E36\\u0E48\\u0E07\\nconst moveTo = (source, target) => {\\n  for (let [key, value] of Object.entries(source)) {\\n    // \\u0E22\\u0E49\\u0E32\\u0E22 property \\u0E08\\u0E32\\u0E01 source \\u0E44\\u0E1B target \\u0E41\\u0E25\\u0E49\\u0E27\\u0E25\\u0E1A property \\u0E2D\\u0E2D\\u0E01\\u0E08\\u0E32\\u0E01 source\\n    target[key] = value\\n    delete source[key]\\n  }\\n}\\n\\nconst obj1 = {\\n  firstName: 'Nuttavut',\\n  lastName: 'Thongjor',\\n}\\n\\nconst obj2 = {}\\n\\nmoveTo(obj1, obj2)\\n\\nconsole.log(obj1) // {}\\nconsole.log(obj2) // {\\\"firstName\\\":\\\"Nuttavut\\\",\\\"lastName\\\":\\\"Thongjor\\\"}\\n\")), mdx(\"h3\", null, \"3. Intercession\"), mdx(\"p\", null, \"Intercession \\u0E19\\u0E31\\u0E49\\u0E19\\u0E2B\\u0E21\\u0E32\\u0E22\\u0E16\\u0E36\\u0E07\\u0E21\\u0E37\\u0E2D\\u0E17\\u0E35\\u0E48\\u0E2A\\u0E32\\u0E21\\u0E04\\u0E23\\u0E31\\u0E1A \\u0E40\\u0E21\\u0E37\\u0E48\\u0E2D\\u0E04\\u0E27\\u0E32\\u0E21\\u0E23\\u0E31\\u0E01\\u0E40\\u0E01\\u0E34\\u0E14\\u0E02\\u0E36\\u0E49\\u0E19\\u0E22\\u0E48\\u0E2D\\u0E21\\u0E21\\u0E35\\u0E21\\u0E37\\u0E2D\\u0E17\\u0E35\\u0E48\\u0E2A\\u0E32\\u0E21\\u0E21\\u0E32\\u0E41\\u0E17\\u0E23\\u0E01\\u0E01\\u0E25\\u0E32\\u0E07\\u0E23\\u0E30\\u0E2B\\u0E27\\u0E48\\u0E32\\u0E07\\u0E2A\\u0E2D\\u0E07\\u0E40\\u0E23\\u0E32 \\u0E41\\u0E25\\u0E30\\u0E21\\u0E35\\u0E17\\u0E35\\u0E48\\u0E2A\\u0E32\\u0E21\\u0E19\\u0E35\\u0E48\\u0E41\\u0E2B\\u0E25\\u0E30\\u0E17\\u0E35\\u0E48\\u0E08\\u0E30\\u0E21\\u0E32\\u0E1B\\u0E31\\u0E48\\u0E19\\u0E1B\\u0E48\\u0E27\\u0E19\\u0E04\\u0E27\\u0E32\\u0E21\\u0E23\\u0E31\\u0E01 \\u0E40\\u0E23\\u0E34\\u0E48\\u0E21\\u0E15\\u0E31\\u0E49\\u0E07\\u0E41\\u0E15\\u0E48\\u0E1B\\u0E49\\u0E32\\u0E22\\u0E2A\\u0E35\\u0E43\\u0E2B\\u0E49\\u0E2D\\u0E35\\u0E01\\u0E1D\\u0E48\\u0E32\\u0E22\\u0E14\\u0E39\\u0E40\\u0E25\\u0E27 \\u0E08\\u0E32\\u0E01\\u0E19\\u0E31\\u0E49\\u0E19\\u0E08\\u0E36\\u0E07\\u0E40\\u0E1B\\u0E34\\u0E14\\u0E28\\u0E36\\u0E01\\u0E40\\u0E1B\\u0E25\\u0E35\\u0E48\\u0E22\\u0E19\\u0E23\\u0E31\\u0E01\\u0E2A\\u0E25\\u0E31\\u0E1A\\u0E04\\u0E39\\u0E48 \\u0E40\\u0E2B\\u0E47\\u0E19\\u0E44\\u0E2B\\u0E21\\u0E04\\u0E23\\u0E31\\u0E1A\\u0E21\\u0E37\\u0E2D\\u0E17\\u0E35\\u0E48\\u0E2A\\u0E32\\u0E21\\u0E19\\u0E31\\u0E49\\u0E19\\u0E0A\\u0E48\\u0E33\\u0E0A\\u0E2D\\u0E07\\u0E43\\u0E19\\u0E14\\u0E49\\u0E32\\u0E19\\u0E01\\u0E32\\u0E23\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07\\u0E04\\u0E27\\u0E32\\u0E21\\u0E2B\\u0E21\\u0E32\\u0E22\\u0E43\\u0E2B\\u0E21\\u0E48\"), \"\\u0E43\\u0E2B\\u0E49\\u0E01\\u0E31\\u0E1A\\u0E04\\u0E27\\u0E32\\u0E21\\u0E23\\u0E31\\u0E01\\u0E40\\u0E14\\u0E34\\u0E21\\u0E46 \\u0E41\\u0E25\\u0E30\\u0E19\\u0E31\\u0E48\\u0E19\\u0E2B\\u0E25\\u0E30\\u0E04\\u0E23\\u0E31\\u0E1A\\u0E04\\u0E37\\u0E2D Intercession\"), mdx(\"p\", null, \"\\u0E40\\u0E23\\u0E32\\u0E2A\\u0E32\\u0E21\\u0E32\\u0E23\\u0E16\\u0E43\\u0E0A\\u0E49 Intercession \\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07\\u0E04\\u0E27\\u0E32\\u0E21\\u0E2B\\u0E21\\u0E32\\u0E22\\u0E43\\u0E2B\\u0E21\\u0E48\\u0E43\\u0E2B\\u0E49\\u0E01\\u0E31\\u0E1A\\u0E2A\\u0E34\\u0E48\\u0E07\\u0E17\\u0E35\\u0E48\\u0E21\\u0E35\\u0E2D\\u0E22\\u0E39\\u0E48\\u0E40\\u0E14\\u0E34\\u0E21 \\u0E40\\u0E1B\\u0E47\\u0E19\\u0E01\\u0E32\\u0E23\\u0E40\\u0E1E\\u0E34\\u0E48\\u0E21\\u0E04\\u0E27\\u0E32\\u0E21\\u0E2A\\u0E32\\u0E21\\u0E32\\u0E23\\u0E16\\u0E02\\u0E2D\\u0E07\\u0E42\\u0E04\\u0E4A\\u0E14\\u0E40\\u0E01\\u0E48\\u0E32\\u0E14\\u0E49\\u0E27\\u0E22\\u0E01\\u0E32\\u0E23\\u0E17\\u0E33\\u0E15\\u0E31\\u0E27\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E04\\u0E19\\u0E04\\u0E31\\u0E48\\u0E19\\u0E01\\u0E25\\u0E32\\u0E07 \\u0E40\\u0E0A\\u0E48\\u0E19\\u0E43\\u0E19\\u0E01\\u0E32\\u0E23\\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07\\u0E2D\\u0E47\\u0E2D\\u0E1A\\u0E40\\u0E08\\u0E47\\u0E01\\u0E15\\u0E4C\\u0E40\\u0E23\\u0E32\\u0E2A\\u0E32\\u0E21\\u0E32\\u0E23\\u0E16\\u0E43\\u0E0A\\u0E49 getter \\u0E41\\u0E25\\u0E30 setter \\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E15\\u0E23\\u0E27\\u0E08\\u0E2A\\u0E2D\\u0E1A\\u0E02\\u0E49\\u0E2D\\u0E21\\u0E39\\u0E25\\u0E01\\u0E48\\u0E2D\\u0E19\\u0E15\\u0E31\\u0E49\\u0E07\\u0E04\\u0E48\\u0E32\\u0E43\\u0E2B\\u0E49 property \\u0E44\\u0E14\\u0E49\\u0E14\\u0E31\\u0E07\\u0E19\\u0E35\\u0E49\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-javascript\"\n  }), \"const obj = {\\n  // \\u0E42\\u0E25\\u0E01 JavaScript \\u0E19\\u0E34\\u0E22\\u0E21\\u0E43\\u0E2A\\u0E48 _ \\u0E19\\u0E33\\u0E2B\\u0E19\\u0E49\\u0E32 property \\u0E17\\u0E35\\u0E48\\u0E40\\u0E23\\u0E32\\u0E04\\u0E34\\u0E14\\u0E43\\u0E19\\u0E43\\u0E08\\u0E27\\u0E48\\u0E32\\u0E40\\u0E1B\\u0E47\\u0E19 private property\\n  _name: null,\\n\\n  get name() {\\n    // \\u0E01\\u0E48\\u0E2D\\u0E19\\u0E40\\u0E02\\u0E49\\u0E32\\u0E16\\u0E36\\u0E07 name \\u0E40\\u0E23\\u0E32\\u0E08\\u0E30\\u0E15\\u0E23\\u0E27\\u0E08\\u0E2A\\u0E2D\\u0E1A\\u0E04\\u0E48\\u0E32 _name \\u0E01\\u0E48\\u0E2D\\u0E19\\n    // \\u0E16\\u0E49\\u0E32 _name \\u0E44\\u0E21\\u0E48\\u0E21\\u0E35\\u0E04\\u0E48\\u0E32 \\u0E08\\u0E30\\u0E04\\u0E37\\u0E19\\u0E04\\u0E48\\u0E32\\u0E01\\u0E25\\u0E31\\u0E1A\\u0E40\\u0E1B\\u0E47\\u0E22 no name\\n    return this._name ? this._name : 'no name'\\n  },\\n\\n  set name(value) {\\n    // \\u0E16\\u0E49\\u0E32\\u0E44\\u0E21\\u0E48\\u0E23\\u0E30\\u0E1A\\u0E38\\u0E04\\u0E48\\u0E32\\u0E40\\u0E02\\u0E49\\u0E32\\u0E21\\u0E32\\u0E08\\u0E30 throw error\\n    if (!!value) throw 'Please enter your name.'\\n    this._name = value\\n  },\\n}\\n\\nobj.name = '' // Please enter your name\\n\\nobj.name = 'nut'\\nconsole.log(obj.name) // nut\\n\")), mdx(\"h2\", null, \"\\u0E02\\u0E2D\\u0E07\\u0E40\\u0E25\\u0E48\\u0E19\\u0E43\\u0E2B\\u0E21\\u0E48 ES2015 \\u0E01\\u0E31\\u0E1A Metaprogramming\"), mdx(\"p\", null, \"\\u0E01\\u0E32\\u0E23\\u0E2D\\u0E38\\u0E1A\\u0E31\\u0E15\\u0E34\\u0E41\\u0E2B\\u0E48\\u0E07 ES2015 \\u0E17\\u0E35\\u0E48\\u0E41\\u0E21\\u0E49\\u0E41\\u0E15\\u0E48\\u0E20\\u0E39\\u0E40\\u0E02\\u0E32\\u0E44\\u0E1F\\u0E1F\\u0E39\\u0E08\\u0E34\\u0E22\\u0E31\\u0E07\\u0E15\\u0E49\\u0E2D\\u0E07\\u0E2A\\u0E31\\u0E48\\u0E19\\u0E2A\\u0E30\\u0E40\\u0E17\\u0E37\\u0E2D\\u0E19\\u0E21\\u0E32\\u0E1E\\u0E23\\u0E49\\u0E2D\\u0E21\\u0E01\\u0E31\\u0E1A\\u0E02\\u0E2D\\u0E07\\u0E40\\u0E25\\u0E48\\u0E19\\u0E43\\u0E2B\\u0E21\\u0E48\\u0E2A\\u0E2D\\u0E07\\u0E2A\\u0E34\\u0E48\\u0E07\\u0E17\\u0E35\\u0E48\\u0E0A\\u0E48\\u0E27\\u0E22\\u0E40\\u0E1E\\u0E34\\u0E48\\u0E21\\u0E04\\u0E27\\u0E32\\u0E21\\u0E2A\\u0E32\\u0E21\\u0E32\\u0E23\\u0E16\\u0E43\\u0E2B\\u0E49\\u0E01\\u0E31\\u0E1A metaprogramming \\u0E43\\u0E19 JavaScript \\u0E19\\u0E49\\u0E2D\\u0E07\\u0E2A\\u0E32\\u0E27\\u0E04\\u0E19\\u0E40\\u0E25\\u0E47\\u0E01\\u0E0A\\u0E37\\u0E48\\u0E2D \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Symbol\"), \" \\u0E41\\u0E25\\u0E30\\u0E19\\u0E49\\u0E2D\\u0E07\\u0E0A\\u0E32\\u0E22\\u0E04\\u0E19\\u0E23\\u0E2D\\u0E07\\u0E0A\\u0E37\\u0E48\\u0E2D \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Reflex\"), \" \\u0E41\\u0E25\\u0E30\\u0E19\\u0E49\\u0E2D\\u0E07\\u0E0A\\u0E32\\u0E22\\u0E04\\u0E19\\u0E2A\\u0E38\\u0E14\\u0E17\\u0E49\\u0E2D\\u0E07\\u0E0A\\u0E37\\u0E48\\u0E2D \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Proxy\"), \" \\u0E40\\u0E23\\u0E32\\u0E44\\u0E1B\\u0E17\\u0E33\\u0E04\\u0E27\\u0E32\\u0E21\\u0E23\\u0E39\\u0E49\\u0E08\\u0E31\\u0E01\\u0E01\\u0E31\\u0E1A\\u0E04\\u0E23\\u0E2D\\u0E1A\\u0E04\\u0E23\\u0E31\\u0E27\\u0E19\\u0E35\\u0E49\\u0E01\\u0E31\\u0E19\"), mdx(\"h2\", null, \"Symbol: \\u0E2A\\u0E31\\u0E0D\\u0E25\\u0E31\\u0E01\\u0E29\\u0E13\\u0E4C\\u0E17\\u0E35\\u0E48\\u0E2A\\u0E37\\u0E48\\u0E2D\\u0E2A\\u0E32\\u0E23\\u0E44\\u0E14\\u0E49\\u0E23\\u0E2D\\u0E1A\\u0E42\\u0E25\\u0E01\"), mdx(\"p\", null, \"\\u0E19\\u0E49\\u0E2D\\u0E07 symbol \\u0E19\\u0E31\\u0E49\\u0E19\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E0A\\u0E19\\u0E34\\u0E14\\u0E02\\u0E49\\u0E2D\\u0E21\\u0E39\\u0E25\\u0E43\\u0E2B\\u0E21\\u0E48\\u0E43\\u0E19 ES2015 \\u0E04\\u0E23\\u0E31\\u0E1A \\u0E04\\u0E38\\u0E13\\u0E2A\\u0E21\\u0E1A\\u0E31\\u0E15\\u0E34\\u0E17\\u0E35\\u0E48\\u0E2A\\u0E33\\u0E04\\u0E31\\u0E0D\\u0E02\\u0E2D\\u0E07\\u0E19\\u0E49\\u0E2D\\u0E07\\u0E04\\u0E37\\u0E2D \\u0E19\\u0E49\\u0E2D\\u0E07\\u0E08\\u0E30\\u0E21\\u0E35\\u0E04\\u0E27\\u0E32\\u0E21\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E15\\u0E31\\u0E27\\u0E02\\u0E2D\\u0E07\\u0E15\\u0E31\\u0E27\\u0E40\\u0E2D\\u0E07\\u0E2A\\u0E39\\u0E07 \\u0E14\\u0E31\\u0E07\\u0E19\\u0E31\\u0E49\\u0E19\\u0E17\\u0E38\\u0E01\\u0E04\\u0E23\\u0E31\\u0E49\\u0E07\\u0E17\\u0E35\\u0E48\\u0E40\\u0E23\\u0E32\\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07 symbol \\u0E02\\u0E36\\u0E49\\u0E19\\u0E21\\u0E32\\u0E43\\u0E2B\\u0E21\\u0E48 \\u0E19\\u0E49\\u0E2D\\u0E07\\u0E08\\u0E30\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E15\\u0E31\\u0E27\\u0E02\\u0E2D\\u0E07\\u0E15\\u0E31\\u0E27\\u0E40\\u0E2D\\u0E07\\u0E14\\u0E49\\u0E27\\u0E22\\u0E01\\u0E32\\u0E23\\u0E44\\u0E21\\u0E48\\u0E40\\u0E2B\\u0E21\\u0E37\\u0E2D\\u0E19\\u0E01\\u0E31\\u0E1A\\u0E43\\u0E04\\u0E23\\u0E40\\u0E25\\u0E22\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-javascript\"\n  }), \"const str1 = 'Hello'\\nconst str2 = 'Hello'\\n\\n// \\u0E40\\u0E23\\u0E32\\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07 symbol \\u0E14\\u0E49\\u0E27\\u0E22\\u0E01\\u0E32\\u0E23\\u0E40\\u0E23\\u0E35\\u0E22\\u0E01 Symbol\\n// \\u0E2A\\u0E48\\u0E27\\u0E19 Hello \\u0E19\\u0E31\\u0E48\\u0E19\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E01\\u0E32\\u0E23\\u0E43\\u0E2A\\u0E48\\u0E04\\u0E33\\u0E2D\\u0E18\\u0E34\\u0E1A\\u0E32\\u0E22 symbol \\u0E40\\u0E09\\u0E22\\u0E46\\n// \\u0E08\\u0E30\\u0E43\\u0E2A\\u0E48\\u0E2B\\u0E23\\u0E37\\u0E2D\\u0E44\\u0E21\\u0E48\\u0E43\\u0E2A\\u0E48\\u0E01\\u0E47\\u0E44\\u0E14\\u0E49\\n// \\u0E41\\u0E15\\u0E48\\u0E41\\u0E19\\u0E30\\u0E19\\u0E33\\u0E43\\u0E2B\\u0E49\\u0E43\\u0E2A\\u0E48\\u0E40\\u0E2A\\u0E21\\u0E2D\\u0E04\\u0E23\\u0E31\\u0E1A \\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E1B\\u0E23\\u0E30\\u0E42\\u0E22\\u0E0A\\u0E19\\u0E4C\\u0E43\\u0E19\\u0E01\\u0E32\\u0E23 debug \\u0E42\\u0E1B\\u0E23\\u0E41\\u0E01\\u0E23\\u0E21\\nconst sym1 = Symbol('hello')\\nconst sym2 = Symbol('hello')\\n\\n// string 2 \\u0E15\\u0E31\\u0E27\\u0E21\\u0E35\\u0E04\\u0E48\\u0E32\\u0E40\\u0E2B\\u0E21\\u0E37\\u0E2D\\u0E19\\u0E01\\u0E31\\u0E19\\u0E22\\u0E48\\u0E2D\\u0E22\\u0E40\\u0E17\\u0E48\\u0E32\\u0E01\\u0E31\\u0E19\\nconsole.log(str1 === str2) // true\\n\\n// \\u0E23\\u0E2D\\u0E16\\u0E36\\u0E07\\u0E0A\\u0E32\\u0E15\\u0E34\\u0E2B\\u0E19\\u0E49\\u0E32 symbol 2 \\u0E15\\u0E31\\u0E27\\u0E01\\u0E47\\u0E44\\u0E21\\u0E48\\u0E40\\u0E17\\u0E48\\u0E32\\u0E01\\u0E31\\u0E19!\\nconsole.log(sym1 === sym2) // false\\n\")), mdx(\"p\", null, \"\\u0E04\\u0E19\\u0E40\\u0E23\\u0E32\\u0E15\\u0E48\\u0E2D\\u0E43\\u0E2B\\u0E49\\u0E21\\u0E35\\u0E04\\u0E27\\u0E32\\u0E21\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E15\\u0E31\\u0E27\\u0E40\\u0E2D\\u0E07\\u0E2A\\u0E39\\u0E07\\u0E40\\u0E1E\\u0E35\\u0E22\\u0E07\\u0E43\\u0E14\\u0E01\\u0E47\\u0E22\\u0E31\\u0E07\\u0E15\\u0E49\\u0E2D\\u0E07\\u0E01\\u0E32\\u0E23\\u0E2A\\u0E31\\u0E07\\u0E04\\u0E21\\u0E43\\u0E0A\\u0E48\\u0E44\\u0E2B\\u0E21\\u0E04\\u0E23\\u0E31\\u0E1A \\u0E19\\u0E49\\u0E2D\\u0E07 symbol \\u0E01\\u0E47\\u0E40\\u0E0A\\u0E48\\u0E19\\u0E01\\u0E31\\u0E19 \\u0E40\\u0E23\\u0E32\\u0E2A\\u0E32\\u0E21\\u0E32\\u0E23\\u0E16\\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07 symbol \\u0E41\\u0E25\\u0E49\\u0E27\\u0E19\\u0E33\\u0E01\\u0E25\\u0E31\\u0E1A\\u0E21\\u0E32\\u0E43\\u0E0A\\u0E49\\u0E43\\u0E2B\\u0E21\\u0E48\\u0E44\\u0E14\\u0E49\\u0E14\\u0E49\\u0E27\\u0E22\\u0E01\\u0E32\\u0E23\\u0E40\\u0E23\\u0E35\\u0E22\\u0E01\\u0E43\\u0E0A\\u0E49\\u0E1C\\u0E48\\u0E32\\u0E19 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"global symbol registry\"), \" \\u0E14\\u0E31\\u0E07\\u0E19\\u0E35\\u0E49\\u0E2E\\u0E30\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-javascript\"\n  }), \"const sym1 = Symbol.for('hello')\\nconst sym2 = Symbol.for('hello')\\n\\nconsole.log(sym1 === sym2) // true\\n\")), mdx(\"p\", null, \"\\u0E40\\u0E19\\u0E37\\u0E48\\u0E2D\\u0E07\\u0E08\\u0E32\\u0E01\\u0E23\\u0E32\\u0E22\\u0E25\\u0E30\\u0E40\\u0E2D\\u0E35\\u0E22\\u0E14\\u0E02\\u0E2D\\u0E07\\u0E19\\u0E49\\u0E2D\\u0E07 symbol \\u0E19\\u0E31\\u0E49\\u0E19\\u0E21\\u0E35\\u0E04\\u0E48\\u0E2D\\u0E19\\u0E02\\u0E49\\u0E32\\u0E07\\u0E40\\u0E22\\u0E2D\\u0E30 \\u0E1C\\u0E21\\u0E08\\u0E30\\u0E44\\u0E21\\u0E48\\u0E01\\u0E25\\u0E48\\u0E32\\u0E27\\u0E16\\u0E36\\u0E07\\u0E43\\u0E19\\u0E1A\\u0E17\\u0E04\\u0E27\\u0E32\\u0E21\\u0E19\\u0E35\\u0E49\\u0E21\\u0E32\\u0E01\\u0E19\\u0E31\\u0E01 \\u0E41\\u0E15\\u0E48\\u0E08\\u0E30\\u0E21\\u0E38\\u0E48\\u0E07\\u0E1B\\u0E23\\u0E30\\u0E40\\u0E14\\u0E47\\u0E19\\u0E44\\u0E1B\\u0E17\\u0E35\\u0E48\\u0E01\\u0E32\\u0E23\\u0E43\\u0E0A\\u0E49 symbol \\u0E01\\u0E31\\u0E1A metaprogramming \\u0E40\\u0E25\\u0E22\\u0E04\\u0E23\\u0E31\\u0E1A \\u0E40\\u0E2D\\u0E32\\u0E2B\\u0E25\\u0E30\\u0E1E\\u0E31\\u0E01\\u0E1C\\u0E48\\u0E2D\\u0E19\\u0E14\\u0E37\\u0E48\\u0E21\\u0E19\\u0E49\\u0E33\\u0E1B\\u0E31\\u0E2A\\u0E2A\\u0E32\\u0E27\\u0E30\\u0E41\\u0E25\\u0E49\\u0E27\\u0E25\\u0E38\\u0E22\\u0E15\\u0E48\\u0E2D\\u0E01\\u0E31\\u0E19\\u0E40\\u0E25\\u0E22\"), mdx(\"p\", null, \"ES2015 \\u0E19\\u0E31\\u0E49\\u0E19\\u0E0A\\u0E48\\u0E32\\u0E07\\u0E1E\\u0E34\\u0E25\\u0E36\\u0E01\\u0E04\\u0E19 \\u0E21\\u0E31\\u0E19\\u0E44\\u0E14\\u0E49\\u0E08\\u0E31\\u0E1A\\u0E01\\u0E25\\u0E38\\u0E48\\u0E21\\u0E02\\u0E2D\\u0E07 symbol \\u0E0A\\u0E38\\u0E14\\u0E2B\\u0E19\\u0E36\\u0E48\\u0E07\\u0E17\\u0E35\\u0E48\\u0E44\\u0E14\\u0E49\\u0E19\\u0E34\\u0E22\\u0E32\\u0E21\\u0E40\\u0E2D\\u0E32\\u0E44\\u0E27\\u0E49\\u0E41\\u0E25\\u0E49\\u0E27\\u0E40\\u0E02\\u0E49\\u0E32\\u0E44\\u0E1B\\u0E44\\u0E27\\u0E49\\u0E43\\u0E19\\u0E15\\u0E31\\u0E27 array, string \\u0E41\\u0E25\\u0E30\\u0E2D\\u0E47\\u0E2D\\u0E1A\\u0E40\\u0E08\\u0E47\\u0E01\\u0E15\\u0E4C\\u0E2D\\u0E37\\u0E48\\u0E19\\u0E46\\u0E40\\u0E25\\u0E22 \\u0E40\\u0E23\\u0E32\\u0E40\\u0E23\\u0E35\\u0E22\\u0E01 symbol \\u0E01\\u0E25\\u0E38\\u0E48\\u0E21\\u0E19\\u0E35\\u0E49\\u0E27\\u0E48\\u0E32 \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"well known symbols\"), \" \\u0E25\\u0E2D\\u0E07\\u0E14\\u0E39\\u0E15\\u0E31\\u0E27\\u0E2D\\u0E22\\u0E48\\u0E32\\u0E07\\u0E1A\\u0E32\\u0E07\\u0E15\\u0E31\\u0E27\\u0E08\\u0E32\\u0E01 symbol \\u0E01\\u0E25\\u0E38\\u0E48\\u0E21\\u0E19\\u0E35\\u0E49\\u0E01\\u0E31\\u0E19\\u0E04\\u0E23\\u0E31\\u0E1A\"), mdx(\"h3\", null, \"Symbol.iterator\"), mdx(\"p\", null, \"\\u0E40\\u0E23\\u0E32\\u0E2A\\u0E32\\u0E21\\u0E32\\u0E23\\u0E16\\u0E43\\u0E0A\\u0E49 for..of \\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E27\\u0E19\\u0E25\\u0E39\\u0E1B\\u0E23\\u0E2D\\u0E1A\\u0E2D\\u0E32\\u0E23\\u0E4C\\u0E40\\u0E23\\u0E22\\u0E4C\\u0E44\\u0E14\\u0E49\\u0E14\\u0E31\\u0E07\\u0E19\\u0E35\\u0E49\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-javascript\"\n  }), \"const arr = [1, 2, 3]\\n\\nfor (let i of arr) {\\n  console.log(i)\\n}\\n\\n// 1, 2, 3\\n\")), mdx(\"p\", null, \"\\u0E2A\\u0E21\\u0E21\\u0E15\\u0E34\\u0E15\\u0E2D\\u0E19\\u0E19\\u0E35\\u0E49\\u0E40\\u0E23\\u0E32\\u0E21\\u0E35\\u0E04\\u0E25\\u0E32\\u0E2A\\u0E0A\\u0E37\\u0E48\\u0E2D Text \\u0E17\\u0E33\\u0E2B\\u0E19\\u0E49\\u0E32\\u0E17\\u0E35\\u0E48\\u0E40\\u0E01\\u0E47\\u0E1A\\u0E04\\u0E33\\u0E17\\u0E31\\u0E49\\u0E07\\u0E2B\\u0E21\\u0E14\\u0E17\\u0E35\\u0E48\\u0E15\\u0E48\\u0E2D\\u0E01\\u0E31\\u0E19\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E1B\\u0E23\\u0E30\\u0E42\\u0E22\\u0E04 \\u0E40\\u0E0A\\u0E48\\u0E19\\u0E16\\u0E49\\u0E32\\u0E1B\\u0E23\\u0E30\\u0E42\\u0E22\\u0E04\\u0E04\\u0E37\\u0E2D \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"This is a book\"), \" Text \\u0E08\\u0E30\\u0E40\\u0E01\\u0E47\\u0E1A \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"['This', 'is', 'a', 'book']\"), \" \\u0E42\\u0E08\\u0E17\\u0E22\\u0E4C\\u0E02\\u0E2D\\u0E07\\u0E40\\u0E23\\u0E32\\u0E04\\u0E37\\u0E2D\\u0E40\\u0E23\\u0E32\\u0E15\\u0E49\\u0E2D\\u0E07\\u0E01\\u0E32\\u0E23\\u0E43\\u0E2B\\u0E49\\u0E40\\u0E21\\u0E37\\u0E48\\u0E2D\\u0E44\\u0E2B\\u0E23\\u0E48\\u0E01\\u0E47\\u0E15\\u0E32\\u0E21\\u0E17\\u0E35\\u0E48\\u0E40\\u0E23\\u0E32\\u0E40\\u0E23\\u0E35\\u0E22\\u0E01\\u0E43\\u0E0A\\u0E49\\u0E2D\\u0E47\\u0E2D\\u0E1A\\u0E40\\u0E08\\u0E47\\u0E01\\u0E15\\u0E4C\\u0E02\\u0E2D\\u0E07\\u0E04\\u0E25\\u0E32\\u0E2A\\u0E19\\u0E35\\u0E49\\u0E43\\u0E19 for..of \\u0E43\\u0E2B\\u0E49\\u0E21\\u0E31\\u0E19\\u0E27\\u0E19\\u0E25\\u0E39\\u0E1B\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E1E\\u0E34\\u0E21\\u0E1E\\u0E4C\\u0E04\\u0E48\\u0E32\\u0E41\\u0E15\\u0E48\\u0E25\\u0E30\\u0E04\\u0E33\\u0E2D\\u0E2D\\u0E01\\u0E21\\u0E32 \\u0E40\\u0E2D\\u0E32\\u0E2B\\u0E25\\u0E30\\u0E25\\u0E07\\u0E21\\u0E37\\u0E2D!\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-javascript\"\n  }), \"class Text {\\n  constructor(text) {\\n    // \\u0E41\\u0E15\\u0E01\\u0E02\\u0E49\\u0E2D\\u0E04\\u0E27\\u0E32\\u0E21\\u0E22\\u0E32\\u0E27\\u0E46\\u0E2D\\u0E2D\\u0E01\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E2D\\u0E32\\u0E23\\u0E4C\\u0E40\\u0E23\\u0E22\\u0E4C\\u0E42\\u0E14\\u0E22\\u0E43\\u0E0A\\u0E49\\u0E0A\\u0E48\\u0E2D\\u0E07\\u0E27\\u0E48\\u0E32\\u0E07\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E15\\u0E31\\u0E27\\u0E2B\\u0E31\\u0E48\\u0E19\\n    this.words = text.split(' ')\\n  }\\n\\n  // \\u0E2A\\u0E48\\u0E27\\u0E19\\u0E19\\u0E35\\u0E49\\u0E04\\u0E37\\u0E2D ES2015 Generators \\u0E16\\u0E49\\u0E32\\u0E44\\u0E21\\u0E48\\u0E23\\u0E39\\u0E49\\u0E08\\u0E31\\u0E01\\u0E44\\u0E21\\u0E48\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E44\\u0E23\\u0E04\\u0E23\\u0E31\\u0E1A\\n  // \\u0E08\\u0E33\\u0E23\\u0E39\\u0E1B\\u0E41\\u0E1A\\u0E1A\\u0E01\\u0E32\\u0E23\\u0E40\\u0E02\\u0E35\\u0E22\\u0E19\\u0E44\\u0E1B\\u0E43\\u0E0A\\u0E49\\u0E1E\\u0E2D\\n  *[Symbol.iterator]() {\\n    for (let word of this.words) {\\n      yield word\\n    }\\n  }\\n}\\n\\nconst text = new Text('This is a book')\\n\\n// \\u0E17\\u0E35\\u0E19\\u0E35\\u0E49\\u0E04\\u0E25\\u0E32\\u0E2A Text \\u0E02\\u0E2D\\u0E07\\u0E40\\u0E23\\u0E32\\u0E01\\u0E47\\u0E08\\u0E30\\u0E19\\u0E33\\u0E44\\u0E1B\\u0E27\\u0E19\\u0E25\\u0E39\\u0E1B\\u0E44\\u0E14\\u0E49\\u0E41\\u0E25\\u0E49\\u0E27 \\u0E41\\u0E2B\\u0E25\\u0E48\\u0E21\\u0E41\\u0E21\\u0E27\\u0E1D\\u0E38\\u0E14\\u0E46\\nfor (let i of text) {\\n  console.log(i)\\n}\\n\\n// This\\n// is\\n// a\\n// book\\n\")), mdx(\"h3\", null, \"Symbol.match\"), mdx(\"p\", null, \"\\u0E01\\u0E48\\u0E2D\\u0E19\\u0E2D\\u0E37\\u0E48\\u0E19\\u0E40\\u0E23\\u0E32\\u0E44\\u0E1B\\u0E17\\u0E1A\\u0E17\\u0E27\\u0E19\\u0E01\\u0E31\\u0E19\\u0E2B\\u0E19\\u0E48\\u0E2D\\u0E22\\u0E14\\u0E35\\u0E01\\u0E27\\u0E48\\u0E32\\u0E27\\u0E48\\u0E32\\u0E43\\u0E19 String#match \\u0E02\\u0E2D\\u0E07 JavaScript \\u0E14\\u0E31\\u0E49\\u0E07\\u0E40\\u0E14\\u0E34\\u0E21\\u0E19\\u0E31\\u0E49\\u0E19\\u0E17\\u0E33\\u0E07\\u0E32\\u0E19\\u0E22\\u0E31\\u0E07\\u0E44\\u0E07\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-javascript\"\n  }), \"const str1 = 'hello world'\\nconst regex = /^hello/\\n\\n// match \\u0E43\\u0E0A\\u0E49\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E15\\u0E23\\u0E27\\u0E08\\u0E2A\\u0E2D\\u0E1A\\u0E27\\u0E48\\u0E32 string \\u0E19\\u0E31\\u0E49\\u0E19\\u0E21\\u0E35\\u0E23\\u0E39\\u0E1B\\u0E41\\u0E1A\\u0E1A\\u0E15\\u0E23\\u0E07\\u0E01\\u0E31\\u0E1A regular expression\\n// \\u0E17\\u0E35\\u0E48\\u0E40\\u0E23\\u0E32\\u0E23\\u0E30\\u0E1A\\u0E38\\u0E44\\u0E27\\u0E49\\u0E2B\\u0E23\\u0E37\\u0E2D\\u0E44\\u0E21\\u0E48 \\u0E2A\\u0E31\\u0E07\\u0E40\\u0E01\\u0E15\\u0E2A\\u0E34\\u0E48\\u0E07\\u0E17\\u0E35\\u0E48\\u0E21\\u0E31\\u0E19\\u0E04\\u0E37\\u0E19\\u0E04\\u0E48\\u0E32\\u0E01\\u0E25\\u0E31\\u0E1A\\u0E21\\u0E32\\u0E19\\u0E30\\u0E04\\u0E23\\u0E31\\u0E1A\\nconsole.log(str1.match(regex)) // ['hello']\\n\")), mdx(\"p\", null, \"\\u0E40\\u0E23\\u0E32\\u0E21\\u0E35\\u0E04\\u0E25\\u0E32\\u0E2A Word \\u0E2A\\u0E33\\u0E2B\\u0E23\\u0E31\\u0E1A\\u0E43\\u0E0A\\u0E49\\u0E40\\u0E01\\u0E47\\u0E1A\\u0E04\\u0E33\\u0E17\\u0E35\\u0E48\\u0E2D\\u0E32\\u0E08\\u0E21\\u0E35 article(a, an, the) \\u0E1B\\u0E23\\u0E30\\u0E01\\u0E2D\\u0E1A\\u0E2D\\u0E22\\u0E39\\u0E48\\u0E14\\u0E49\\u0E27\\u0E22 \\u0E42\\u0E08\\u0E17\\u0E22\\u0E4C\\u0E02\\u0E2D\\u0E07\\u0E40\\u0E23\\u0E32\\u0E04\\u0E37\\u0E2D\\u0E40\\u0E23\\u0E32\\u0E15\\u0E49\\u0E2D\\u0E07\\u0E01\\u0E32\\u0E23\\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07\\u0E40\\u0E21\\u0E18\\u0E2D\\u0E14 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"match\"), \" \\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E40\\u0E1B\\u0E23\\u0E35\\u0E22\\u0E1A\\u0E40\\u0E17\\u0E35\\u0E22\\u0E1A string \\u0E01\\u0E31\\u0E1A\\u0E04\\u0E25\\u0E32\\u0E2A Word \\u0E02\\u0E2D\\u0E07\\u0E40\\u0E23\\u0E32 \\u0E42\\u0E14\\u0E22\\u0E17\\u0E35\\u0E48\\u0E16\\u0E49\\u0E32 string \\u0E19\\u0E31\\u0E49\\u0E19\\u0E40\\u0E2B\\u0E21\\u0E37\\u0E2D\\u0E19\\u0E01\\u0E31\\u0E1A Word \\u0E02\\u0E2D\\u0E07\\u0E40\\u0E23\\u0E32\\u0E15\\u0E2D\\u0E19\\u0E17\\u0E35\\u0E48\\u0E44\\u0E21\\u0E48\\u0E21\\u0E35 article \\u0E08\\u0E30\\u0E16\\u0E37\\u0E2D\\u0E27\\u0E48\\u0E32\\u0E40\\u0E02\\u0E49\\u0E32\\u0E04\\u0E39\\u0E48\\u0E01\\u0E31\\u0E19 \\u0E40\\u0E0A\\u0E48\\u0E19\\u0E16\\u0E49\\u0E32\\u0E40\\u0E23\\u0E32\\u0E40\\u0E1B\\u0E23\\u0E35\\u0E22\\u0E1A\\u0E40\\u0E17\\u0E35\\u0E22\\u0E1A \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"book\"), \" \\u0E01\\u0E31\\u0E1A\\u0E2D\\u0E47\\u0E2D\\u0E1A\\u0E40\\u0E08\\u0E47\\u0E01\\u0E15\\u0E4C\\u0E02\\u0E2D\\u0E07\\u0E04\\u0E25\\u0E32\\u0E2A Word \\u0E17\\u0E35\\u0E48\\u0E40\\u0E01\\u0E47\\u0E1A\\u0E04\\u0E48\\u0E32 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"a book\"), \" \\u0E44\\u0E27\\u0E49\\u0E08\\u0E30\\u0E16\\u0E37\\u0E2D\\u0E27\\u0E48\\u0E32\\u0E40\\u0E17\\u0E48\\u0E32\\u0E01\\u0E31\\u0E19 \\u0E40\\u0E1E\\u0E23\\u0E32\\u0E30\\u0E40\\u0E23\\u0E32\\u0E44\\u0E21\\u0E48\\u0E04\\u0E33\\u0E19\\u0E36\\u0E07\\u0E16\\u0E36\\u0E07 article\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-javascript\"\n  }), \"class Word {\\n  constructor(word) {\\n    this.word = word\\n  }\\n\\n  [Symbol.match](string) {\\n    const index = this.word\\n      .replace(/^an /, '')\\n      .replace(/^a /, '')\\n      .replace(/^the /, '')\\n      .indexOf(string)\\n\\n    // \\u0E2B\\u0E25\\u0E31\\u0E07\\u0E08\\u0E32\\u0E01\\u0E15\\u0E31\\u0E14 article \\u0E2D\\u0E2D\\u0E01\\u0E41\\u0E25\\u0E49\\u0E27\\u0E16\\u0E49\\u0E32\\u0E44\\u0E21\\u0E48\\u0E40\\u0E17\\u0E48\\u0E32\\u0E01\\u0E31\\u0E19\\u0E43\\u0E2B\\u0E49\\u0E04\\u0E37\\u0E19\\u0E04\\u0E48\\u0E32\\u0E40\\u0E1B\\u0E47\\u0E19 -1\\n    // \\u0E41\\u0E15\\u0E48\\u0E16\\u0E49\\u0E32\\u0E40\\u0E17\\u0E48\\u0E32\\u0E01\\u0E31\\u0E19\\u0E43\\u0E2B\\u0E49\\u0E04\\u0E37\\u0E19\\u0E04\\u0E48\\u0E32\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E2D\\u0E32\\u0E23\\u0E4C\\u0E40\\u0E23\\u0E22\\u0E4C\\u0E41\\u0E1A\\u0E1A\\u0E40\\u0E14\\u0E35\\u0E22\\u0E27\\u0E01\\u0E31\\u0E1A\\u0E17\\u0E35\\u0E48 String#match \\u0E17\\u0E33\\n    return index === -1 ? null : [this.word]\\n  }\\n}\\n\\nconst word = new Word('a book')\\nconsole.log('book'.match(word)) // ['a book']\\n\")), mdx(\"h2\", null, \"Reflect\"), mdx(\"p\", null, \"ES2015 \\u0E44\\u0E14\\u0E49\\u0E40\\u0E1E\\u0E34\\u0E48\\u0E21 Reflect \\u0E40\\u0E1B\\u0E47\\u0E19\\u0E2D\\u0E47\\u0E2D\\u0E1A\\u0E40\\u0E08\\u0E47\\u0E01\\u0E15\\u0E4C\\u0E2D\\u0E35\\u0E01\\u0E1B\\u0E23\\u0E30\\u0E40\\u0E20\\u0E17\\u0E2B\\u0E19\\u0E36\\u0E48\\u0E07\\u0E43\\u0E19\\u0E15\\u0E31\\u0E27\\u0E20\\u0E32\\u0E29\\u0E32 \\u0E21\\u0E35\\u0E2B\\u0E25\\u0E32\\u0E22\\u0E40\\u0E21\\u0E18\\u0E2D\\u0E14\\u0E20\\u0E32\\u0E22\\u0E43\\u0E19\\u0E04\\u0E25\\u0E49\\u0E32\\u0E22\\u0E46\\u0E40\\u0E21\\u0E18\\u0E2D\\u0E14\\u0E02\\u0E2D\\u0E07\\u0E2D\\u0E47\\u0E2D\\u0E1A\\u0E40\\u0E08\\u0E47\\u0E01\\u0E15\\u0E4C \\u0E40\\u0E23\\u0E32\\u0E08\\u0E30\\u0E21\\u0E32\\u0E25\\u0E2D\\u0E07\\u0E40\\u0E23\\u0E35\\u0E22\\u0E19\\u0E23\\u0E39\\u0E49\\u0E2A\\u0E32\\u0E21\\u0E40\\u0E21\\u0E18\\u0E2D\\u0E14\\u0E15\\u0E48\\u0E2D\\u0E44\\u0E1B\\u0E19\\u0E35\\u0E49\\u0E02\\u0E2D\\u0E07 Reflect \\u0E01\\u0E31\\u0E19\\u0E14\\u0E31\\u0E07\\u0E19\\u0E35\\u0E49\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-javascript\"\n  }), \"const obj = {\\n  name: null,\\n  age: null,\\n}\\n\\n// \\u0E43\\u0E0A\\u0E49\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E15\\u0E31\\u0E49\\u0E07\\u0E04\\u0E48\\u0E32 property \\u0E43\\u0E19\\u0E2D\\u0E47\\u0E2D\\u0E1A\\u0E40\\u0E08\\u0E47\\u0E01\\u0E15\\u0E4C\\nReflect.set(obj, 'name', 'Nuttavut Thongjor')\\n\\n// \\u0E43\\u0E0A\\u0E49\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E14\\u0E36\\u0E07\\u0E04\\u0E48\\u0E32 property \\u0E43\\u0E19\\u0E2D\\u0E47\\u0E2D\\u0E1A\\u0E40\\u0E08\\u0E47\\u0E01\\u0E15\\u0E4C\\nReflect.get(obj, 'name') // Nuttavut Thongjor\\n\\n// \\u0E43\\u0E0A\\u0E49\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E15\\u0E23\\u0E27\\u0E08\\u0E2A\\u0E2D\\u0E1A\\u0E27\\u0E48\\u0E32\\u0E21\\u0E35 property \\u0E19\\u0E31\\u0E49\\u0E19\\u0E43\\u0E19\\u0E2D\\u0E47\\u0E2D\\u0E1A\\u0E40\\u0E08\\u0E47\\u0E01\\u0E15\\u0E4C\\u0E2B\\u0E23\\u0E37\\u0E2D\\u0E44\\u0E21\\u0E48\\nReflect.has(obj, 'age') // true\\n\")), mdx(\"h2\", null, \"Proxy\"), mdx(\"p\", null, \"\\u0E40\\u0E23\\u0E37\\u0E48\\u0E2D\\u0E07\\u0E2A\\u0E38\\u0E14\\u0E17\\u0E49\\u0E32\\u0E22\\u0E25\\u0E30\\u0E04\\u0E23\\u0E31\\u0E1A\\u0E17\\u0E35\\u0E48\\u0E1C\\u0E21\\u0E08\\u0E30\\u0E01\\u0E25\\u0E48\\u0E32\\u0E27\\u0E16\\u0E36\\u0E07\\u0E43\\u0E19\\u0E1A\\u0E17\\u0E04\\u0E27\\u0E32\\u0E21\\u0E19\\u0E35\\u0E49\\u0E19\\u0E31\\u0E48\\u0E19\\u0E04\\u0E37\\u0E2D Proxy\"), mdx(\"p\", null, \"Proxy \\u0E19\\u0E31\\u0E49\\u0E19\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E04\\u0E27\\u0E32\\u0E21\\u0E2A\\u0E32\\u0E21\\u0E32\\u0E23\\u0E16\\u0E2D\\u0E22\\u0E48\\u0E32\\u0E07\\u0E2B\\u0E19\\u0E36\\u0E48\\u0E07\\u0E17\\u0E35\\u0E48\\u0E08\\u0E30\\u0E17\\u0E33\\u0E01\\u0E32\\u0E23\\u0E2B\\u0E48\\u0E2D\\u0E2B\\u0E38\\u0E48\\u0E21\\u0E2D\\u0E47\\u0E2D\\u0E1A\\u0E40\\u0E08\\u0E47\\u0E01\\u0E15\\u0E4C\\u0E40\\u0E2D\\u0E32\\u0E44\\u0E27\\u0E49 \\u0E08\\u0E32\\u0E01\\u0E19\\u0E31\\u0E49\\u0E19\\u0E08\\u0E30\\u0E17\\u0E33\\u0E15\\u0E31\\u0E27\\u0E40\\u0E1B\\u0E47\\u0E19\\u0E21\\u0E37\\u0E2D\\u0E17\\u0E35\\u0E48\\u0E2A\\u0E32\\u0E21\\u0E04\\u0E31\\u0E48\\u0E19\\u0E01\\u0E25\\u0E32\\u0E07\\u0E23\\u0E30\\u0E2B\\u0E27\\u0E48\\u0E32\\u0E07\\u0E40\\u0E23\\u0E32\\u0E1C\\u0E48\\u0E32\\u0E19\\u0E2A\\u0E34\\u0E48\\u0E07\\u0E17\\u0E35\\u0E48\\u0E40\\u0E23\\u0E35\\u0E22\\u0E01\\u0E27\\u0E48\\u0E32 \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"trap\")), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-javascript\"\n  }), \"// \\u0E2D\\u0E47\\u0E2D\\u0E1A\\u0E40\\u0E08\\u0E47\\u0E01\\u0E15\\u0E4C\\u0E15\\u0E31\\u0E49\\u0E07\\u0E15\\u0E49\\u0E19\\u0E17\\u0E35\\u0E48\\u0E40\\u0E23\\u0E32\\u0E15\\u0E49\\u0E2D\\u0E07\\u0E01\\u0E32\\u0E23\\u0E40\\u0E1E\\u0E34\\u0E48\\u0E21\\u0E04\\u0E27\\u0E32\\u0E21\\u0E2A\\u0E32\\u0E21\\u0E32\\u0E23\\u0E16\\u0E43\\u0E2B\\u0E49\\u0E21\\u0E31\\u0E19\\u0E14\\u0E49\\u0E27\\u0E22\\u0E01\\u0E32\\u0E23\\u0E43\\u0E0A\\u0E49 Proxy\\nconst target = {}\\n\\n// handler \\u0E40\\u0E1B\\u0E47\\u0E19\\u0E2D\\u0E47\\u0E2D\\u0E1A\\u0E40\\u0E08\\u0E47\\u0E01\\u0E15\\u0E4C\\u0E17\\u0E35\\u0E48\\u0E19\\u0E34\\u0E22\\u0E32\\u0E21\\u0E27\\u0E34\\u0E18\\u0E35\\u0E40\\u0E1E\\u0E34\\u0E48\\u0E21\\u0E04\\u0E27\\u0E32\\u0E21\\u0E2A\\u0E32\\u0E21\\u0E32\\u0E23\\u0E16\\u0E43\\u0E2B\\u0E49\\u0E2D\\u0E47\\u0E2D\\u0E1A\\u0E40\\u0E08\\u0E47\\u0E01\\u0E15\\u0E4C target\\n// \\u0E1C\\u0E48\\u0E32\\u0E19\\u0E40\\u0E21\\u0E18\\u0E2D\\u0E14\\u0E17\\u0E35\\u0E48\\u0E40\\u0E23\\u0E35\\u0E22\\u0E01\\u0E27\\u0E48\\u0E32 trap (\\u0E08\\u0E30\\u0E44\\u0E14\\u0E49\\u0E1E\\u0E39\\u0E14\\u0E16\\u0E36\\u0E07\\u0E15\\u0E48\\u0E2D\\u0E44\\u0E1B)\\nconst handler = {}\\n\\n// \\u0E27\\u0E34\\u0E18\\u0E35\\u0E2A\\u0E23\\u0E49\\u0E32\\u0E07 Proxy \\u0E41\\u0E2A\\u0E19\\u0E07\\u0E48\\u0E32\\u0E22\\u0E41\\u0E04\\u0E48\\u0E2A\\u0E48\\u0E07 target \\u0E41\\u0E25\\u0E30 handler \\u0E40\\u0E02\\u0E49\\u0E32\\u0E44\\u0E1B\\nconst proxy = new Proxy(target, handler)\\n\")), mdx(\"p\", null, \"trap \\u0E19\\u0E31\\u0E49\\u0E19\\u0E04\\u0E37\\u0E2D\\u0E40\\u0E21\\u0E18\\u0E2D\\u0E14\\u0E17\\u0E35\\u0E48 JavaScript \\u0E21\\u0E35\\u0E43\\u0E2B\\u0E49\\u0E40\\u0E23\\u0E32\\u0E19\\u0E33\\u0E44\\u0E1B\\u0E43\\u0E0A\\u0E49\\u0E43\\u0E19 handler \\u0E15\\u0E31\\u0E27\\u0E2D\\u0E22\\u0E48\\u0E32\\u0E07\\u0E02\\u0E2D\\u0E07 trap \\u0E40\\u0E0A\\u0E48\\u0E19 get \\u0E41\\u0E25\\u0E30 set \\u0E40\\u0E23\\u0E32\\u0E08\\u0E30\\u0E21\\u0E32\\u0E25\\u0E2D\\u0E07\\u0E43\\u0E0A\\u0E49 get \\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D log \\u0E04\\u0E48\\u0E32\\u0E02\\u0E2D\\u0E07 property \\u0E40\\u0E21\\u0E37\\u0E48\\u0E2D\\u0E40\\u0E23\\u0E32\\u0E40\\u0E02\\u0E49\\u0E32\\u0E16\\u0E36\\u0E07\\u0E01\\u0E31\\u0E19\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-javascript\"\n  }), \"const target = {}\\nconst handler = {\\n  // get \\u0E19\\u0E35\\u0E48\\u0E25\\u0E30\\u0E04\\u0E23\\u0E31\\u0E1A\\u0E04\\u0E37\\u0E2D trap\\n  // get \\u0E15\\u0E31\\u0E27\\u0E19\\u0E35\\u0E49\\u0E23\\u0E31\\u0E1A\\u0E1E\\u0E32\\u0E23\\u0E32\\u0E21\\u0E34\\u0E40\\u0E15\\u0E2D\\u0E23\\u0E4C3\\u0E15\\u0E31\\u0E27\\n  // \\u0E40\\u0E23\\u0E32\\u0E15\\u0E49\\u0E2D\\u0E07\\u0E01\\u0E32\\u0E23 log \\u0E0A\\u0E37\\u0E2D\\u0E02\\u0E2D\\u0E07 property \\u0E08\\u0E36\\u0E07\\u0E40\\u0E02\\u0E49\\u0E32\\u0E16\\u0E36\\u0E07 name\\n  get: (target, name, receiver) => {\\n    console.log(`Getting ${name}`)\\n  },\\n}\\n\\nconst book = new Proxy(target, handler)\\nbook.title = 'Introduction to ES2015'\\nbook.title // Getting title\\n\")), mdx(\"p\", null, \"\\u0E25\\u0E2D\\u0E07\\u0E14\\u0E39\\u0E15\\u0E31\\u0E27\\u0E2D\\u0E22\\u0E48\\u0E32\\u0E07\\u0E2A\\u0E38\\u0E14\\u0E04\\u0E25\\u0E32\\u0E2A\\u0E2A\\u0E34\\u0E01\\u0E02\\u0E2D\\u0E07\\u0E01\\u0E32\\u0E23\\u0E43\\u0E0A\\u0E49 Proxy \\u0E01\\u0E31\\u0E19\\u0E04\\u0E23\\u0E31\\u0E1A \\u0E19\\u0E31\\u0E48\\u0E19\\u0E04\\u0E37\\u0E2D\\u0E01\\u0E32\\u0E23\\u0E43\\u0E0A\\u0E49 Proxy \\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E15\\u0E23\\u0E27\\u0E08\\u0E2A\\u0E2D\\u0E1A\\u0E02\\u0E49\\u0E2D\\u0E21\\u0E39\\u0E25\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-javascript\"\n  }), \"const validator = {\\n  // \\u0E43\\u0E0A\\u0E49 trap \\u0E0A\\u0E37\\u0E48\\u0E2D set\\n  // \\u0E40\\u0E1E\\u0E23\\u0E32\\u0E30\\u0E40\\u0E23\\u0E32\\u0E15\\u0E49\\u0E2D\\u0E07\\u0E01\\u0E32\\u0E23\\u0E40\\u0E0A\\u0E47\\u0E04\\u0E02\\u0E49\\u0E2D\\u0E21\\u0E39\\u0E25\\u0E40\\u0E21\\u0E37\\u0E48\\u0E2D\\u0E17\\u0E33\\u0E01\\u0E32\\u0E23\\u0E15\\u0E31\\u0E49\\u0E07\\u0E04\\u0E48\\u0E32\\u0E15\\u0E31\\u0E27\\u0E41\\u0E1B\\u0E23\\n  set(object, property, value) {\\n    switch (property) {\\n      case 'name':\\n        // \\u0E16\\u0E49\\u0E32 name \\u0E44\\u0E21\\u0E48\\u0E21\\u0E35\\u0E04\\u0E48\\u0E32\\u0E43\\u0E2B\\u0E49 error\\n        if (value) break\\n        else throw new TypeError(\\\"Can't be null\\\")\\n      case 'age':\\n        // \\u0E16\\u0E49\\u0E32\\u0E2D\\u0E32\\u0E22\\u0E38\\u0E44\\u0E21\\u0E48\\u0E40\\u0E1B\\u0E49\\u0E19\\u0E15\\u0E31\\u0E27\\u0E40\\u0E25\\u0E02\\u0E08\\u0E33\\u0E19\\u0E27\\u0E19\\u0E40\\u0E15\\u0E47\\u0E21\\u0E43\\u0E2B\\u0E49 error\\n        if (Number.isInteger(value)) break\\n        else throw new TypeError('Must be integer')\\n    }\\n\\n    object[property] = value\\n\\n    // \\u0E16\\u0E49\\u0E32\\u0E2A\\u0E33\\u0E40\\u0E23\\u0E47\\u0E08\\u0E15\\u0E49\\u0E2D\\u0E07 return true \\u0E01\\u0E25\\u0E31\\u0E1A\\u0E2D\\u0E2D\\u0E01\\u0E44\\u0E1B\\u0E14\\u0E49\\u0E27\\u0E22\\n    return true\\n  },\\n}\\n\\nconst person = new Proxy({}, validator)\\nperson.name = '' // Can't be null\\nperson.age = NaN // Must be integer\\n\")), mdx(\"p\", null, \"\\u0E08\\u0E1A\\u0E41\\u0E25\\u0E49\\u0E27\\u0E04\\u0E23\\u0E31\\u0E1A \\u0E15\\u0E49\\u0E2D\\u0E07\\u0E2D\\u0E2D\\u0E01\\u0E15\\u0E31\\u0E27\\u0E01\\u0E48\\u0E2D\\u0E19\\u0E40\\u0E25\\u0E22\\u0E27\\u0E48\\u0E32\\u0E40\\u0E23\\u0E37\\u0E48\\u0E2D\\u0E07\\u0E02\\u0E2D\\u0E07 metaprogramming \\u0E43\\u0E19 JavaScript \\u0E22\\u0E31\\u0E07\\u0E21\\u0E35\\u0E2D\\u0E35\\u0E01\\u0E40\\u0E22\\u0E2D\\u0E30\\u0E21\\u0E32\\u0E01\\u0E41\\u0E25\\u0E30\\u0E19\\u0E33\\u0E44\\u0E1B\\u0E1B\\u0E23\\u0E30\\u0E22\\u0E38\\u0E01\\u0E15\\u0E4C\\u0E15\\u0E48\\u0E2D\\u0E44\\u0E14\\u0E49\\u0E43\\u0E19\\u0E2B\\u0E25\\u0E32\\u0E22\\u0E46\\u0E17\\u0E32\\u0E07 \\u0E2B\\u0E27\\u0E31\\u0E07\\u0E27\\u0E48\\u0E32\\u0E1A\\u0E17\\u0E04\\u0E27\\u0E32\\u0E21\\u0E0A\\u0E34\\u0E49\\u0E19\\u0E19\\u0E35\\u0E49\\u0E08\\u0E30\\u0E0A\\u0E48\\u0E27\\u0E22\\u0E40\\u0E1A\\u0E34\\u0E01\\u0E17\\u0E32\\u0E07\\u0E43\\u0E2B\\u0E49\\u0E40\\u0E1E\\u0E37\\u0E48\\u0E2D\\u0E19\\u0E46\\u0E2D\\u0E48\\u0E32\\u0E19\\u0E40\\u0E2D\\u0E01\\u0E2A\\u0E32\\u0E23\\u0E43\\u0E19\\u0E40\\u0E23\\u0E37\\u0E48\\u0E2D\\u0E07 metaprogramming \\u0E2D\\u0E37\\u0E48\\u0E19\\u0E46\\u0E44\\u0E14\\u0E49\\u0E40\\u0E02\\u0E49\\u0E32\\u0E43\\u0E08\\u0E21\\u0E32\\u0E01\\u0E02\\u0E36\\u0E49\\u0E19\\u0E04\\u0E23\\u0E31\\u0E1A\"), mdx(\"h2\", null, \"\\u0E40\\u0E2D\\u0E01\\u0E2A\\u0E32\\u0E23\\u0E2D\\u0E49\\u0E32\\u0E07\\u0E2D\\u0E34\\u0E07\"), mdx(\"p\", null, \"getify. \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Chapter 7: Meta Programming\"), \". Retrieved May, 27, 2016, from \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://github.com/getify/You-Dont-Know-JS/blob/master/es6%20%26%20beyond/ch7.md\"\n  }), \"https://github.com/getify/You-Dont-Know-JS/blob/master/es6%20%26%20beyond/ch7.md\")), mdx(\"p\", null, \"Dr. Axel Rauschmayer (2015). \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Classes in ECMAScript 6 (final semantics)\"), \". Retrieved May, 27, 2016, from \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"http://www.2ality.com/2015/02/es6-classes-final.html\"\n  }), \"http://www.2ality.com/2015/02/es6-classes-final.html\")), mdx(\"p\", null, \"Addy Osmani. \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Introducing ES2015 Proxies\"), \". Retrieved May, 27, 2016, from \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://developers.google.com/web/updates/2016/02/es2015-proxies\"\n  }), \"https://developers.google.com/web/updates/2016/02/es2015-proxies\")), mdx(\"p\", null, \"Keith Cirkel (2015). \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Metaprogramming in ES6: Symbols and why they're awesome\"), \". Retrieved May, 27, 2016, from \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"http://blog.keithcirkel.co.uk/metaprogramming-in-es6-symbols/\"\n  }), \"http://blog.keithcirkel.co.uk/metaprogramming-in-es6-symbols/\")), mdx(\"p\", null, \"Keith Cirkel (2015). \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Metaprogramming in ES6: Part 2 - Reflect\"), \". Retrieved May, 27, 2016, from \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"http://blog.keithcirkel.co.uk/metaprogramming-in-es6-part-2-reflect/\"\n  }), \"http://blog.keithcirkel.co.uk/metaprogramming-in-es6-part-2-reflect/\")), mdx(\"p\", null, \"Dr. Axel Rauschmayer. \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Metaprogramming with proxies\"), \". Retrieved May, 27, 2016, from \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"http://exploringjs.com/es6/ch_proxies.html\"\n  }), \"http://exploringjs.com/es6/ch_proxies.html\")), mdx(\"p\", null, \"Ravi Kiran (2016). \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Meta Programming in ES6 using Symbols\"), \". Retrieved May, 27, 2016, from \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"http://www.dotnetcurry.com/javascript/1265/metaprogramming-javascript-using-es6-symbols\"\n  }), \"http://www.dotnetcurry.com/javascript/1265/metaprogramming-javascript-using-es6-symbols\")), mdx(\"p\", null, \"Dr. Axel Rauschmayer (2011). \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Reflection and meta-programming in JavaScript\"), \". Retrieved May, 27, 2016, from \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"http://www.2ality.com/2011/01/reflection-and-meta-programming-in.html\"\n  }), \"http://www.2ality.com/2011/01/reflection-and-meta-programming-in.html\")));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#เพราะโปรแกรมเมอร์นั้นขี้เกียจ","title":"เพราะโปรแกรมเมอร์นั้นขี้เกียจ"},{"url":"#metaprogramming-คืออะไร","title":"Metaprogramming คืออะไร?"},{"url":"#metaprogramming-ใน-javascript","title":"Metaprogramming ใน JavaScript","items":[{"url":"#1-introspection","title":"1. Introspection","items":[{"url":"#introspection-กลุ่มฟังก์ชัน","title":"Introspection กลุ่มฟังก์ชัน"},{"url":"#introspection-กลุ่มอ็อบเจ็กต์","title":"Introspection กลุ่มอ็อบเจ็กต์"}]},{"url":"#introspection-กลุ่ม-operators-หรือการดำเนินการ","title":"Introspection กลุ่ม operators หรือการดำเนินการ"},{"url":"#2-self-modification","title":"2. Self-modification"},{"url":"#3-intercession","title":"3. Intercession"}]},{"url":"#ของเล่นใหม่-es2015-กับ-metaprogramming","title":"ของเล่นใหม่ ES2015 กับ Metaprogramming"},{"url":"#symbol-สัญลักษณ์ที่สื่อสารได้รอบโลก","title":"Symbol: สัญลักษณ์ที่สื่อสารได้รอบโลก","items":[{"url":"#symboliterator","title":"Symbol.iterator"},{"url":"#symbolmatch","title":"Symbol.match"}]},{"url":"#reflect","title":"Reflect"},{"url":"#proxy","title":"Proxy"},{"url":"#เอกสารอ้างอิง","title":"เอกสารอ้างอิง"}]},"frontmatter":{"title":"Metaprogramming คืออะไร? เรียนรู้การใช้งานเบื้องต้นผ่าน JavaScript","excerpt":"สอนวิธีเขียน metaprogramming ใน JavaScript ตั้งแต่ Introspection, Self-modification และ Intercession","createdAt":"27 พ.ค. 2016","createdAtDate":"2016-05-27T16:29:38Z","updatedAtDate":"2020-07-19T09:22:05Z","includesMath":false,"coverImage":{"childImageSharp":{"fixed":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAC4jAAAuIwF4pT92AAAC5klEQVQoz22S20vTYRzGv5tBXhQUY0Fo5VKYWjkPzcqhWZZRJBlRObTCLDVzztmm0226g87NQ07zgJWmpuaJzJLOgl5U0Inoooskqpv+ipf36YsWdNHFl98LL+/ze57P8yUyBUDWVpCjHeTtBAV5QnzuC4IGm0BjHtC0E/TQDnpuRfiiCZGvC5H07jQOfzoG45cMmL6mwPNDi95fESAqbsSqaMv/RQf4foLngRs0z8LP7VAsWbDpzWXEvzci83MOjMsHYP6+e0WU6AI7KG7Cf512tIFu8fgqQAVHoao8jEh7JiJdGdhan4ZdvhTomxIQVxOH4/O7Yf6pZ8G8eoQVuqEs8bJoMxS2Vij+igZCoJ4u/lEZKMuAqAupSDXpkFyRAO1VHVJt8Ui2xEJl1EI/akD+twMsmOsCnfCzA3Zyib8l/hWnSuc/Trs6OD4nuMnRhzjRBL+ZZaaPrQhbMCHiFTP9eBaHmCmty63EOU8u6ifPY/+9TsQ0dUBbxo8qWNBx/Y8oO+1sR1g/M73DouOc6L4Tinnm+YKLWlotKvHdGZA2rwBYJgy/zcapD3M4ONuP8Ise6LxWrK1hV7VtULUNYMfgDPQT04ifvAvV+A3QCCOa5qIeOkDPaqBYrMTm10UgdXY+fM0GpAfrYFy6jz1TQ0jx+tEzVYuoBuZnboWm2Y29vbXY2deAnQMubB9yIGbcguhpMzRz5Yh5WoJtC8XYuHSFGSYZJSWWyfXafBltKJLqApckY52Mr+6XJ7snJJX6pdrhkrEBm4xtt0ttt11u6XNI3YhZRo9Vya1TFql5UC61T4rlhpcmScq4HKiPFGFvXh2yivxIvxzAftdtnAgOwzLyCPrGW9w+r1MVF1PLjj093H43rxSz7WXOA4xllLnONIAe1YGUmiyh2mcUiWesIq3EJwzmVpFp7RZp1b1CZ7shoq91ijWlfkEmv1BYWwSvlCBvSCiCPCE+9wWEYrBR0Jhb0IxT/AaN+9GgNfkjiAAAAABJRU5ErkJggg==","width":730,"height":415,"src":"/static/a0567612b5123780e343d5f90facfa4a/58dba/feature-image.png","srcSet":"/static/a0567612b5123780e343d5f90facfa4a/58dba/feature-image.png 1x,\n/static/a0567612b5123780e343d5f90facfa4a/0d9b5/feature-image.png 1.5x,\n/static/a0567612b5123780e343d5f90facfa4a/d304d/feature-image.png 2x","srcWebp":"/static/a0567612b5123780e343d5f90facfa4a/38d2b/feature-image.webp","srcSetWebp":"/static/a0567612b5123780e343d5f90facfa4a/38d2b/feature-image.webp 1x,\n/static/a0567612b5123780e343d5f90facfa4a/2a766/feature-image.webp 1.5x,\n/static/a0567612b5123780e343d5f90facfa4a/2cfbb/feature-image.webp 2x"}}}},"fields":{"slug":"/introduction-to-metaprogramming-in-javascript"}},"authorImage":{"fluid":{"base64":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEfklEQVQ4y3WUjVNUVRiH9+9IRVgRSQJJEJgJHdIyHNNSTI1Eym9BYEQQhGjHHJFdFFBJgwEV3UzYYQFRURQGcfnYQUFlRQFt+CgzDAQWli/x6ZyLFGndmd/cc88973Pe93fee1WDg4MMDtqQd5vNxsDAgDJ+9QpGX44JvWTyeinGE+sn1koNDQ0pmnxWTS6QslqtjI+PMzI2RumNUuJiY4iK3E1BYQE3TZU8ePSQMQGVgVOhU6WaCnsl0rrdUE/Ijm184OGB73wPfOa54+PuzkJvbxb7+qLTaRkVGypx/wfs75+AmWqqWOTtibuTEwvc5gkJ0AIvFgkt9PTCz9uHBa6u5BnyFAtkEm8B5eTI8DBtnR34L12C+p1pzHV0xG2OMy6OTjjZqxW5zJrNrOkzmT/XhU8//oiW1hbGRkcV6FTbVH19fcpuhnwDzmoHHGfao542HacZdriq1XjOcsDf043o4C/YH7aJOXZ2OIr33+6LUQ6sv78fqzjIgddSyQnpSXT0Htyc32WOgxoPBztWe80j1N+Xk2EbSAwJ5tb5dKwt1RSdPs4SYUtRSgzdHc0M2IYmoCJTq1UCRYayHXTaJFHqbN53VLPZz4uM0PUUHggjO34X+zauQRvxNaazyQz/2shV/QmuHNhOV0MZVtswkjEBtE6ULA/EaMzH2cGez73dSdm6huyoLVw8Esfl1Hji136Cbts62ivyeP6wls7GGirSE/i9ukgAhxTgZJYKUJZcV2dGPWMaaz/0JmZjAJv9/dB8tZzmkhxairN5cukM7eVG2iqL6bxTRpu5hDPHEunq7hagfvpeQxUPpWRPrVqxnPfsp5MY+hVfLvYRmS2l+WIWHRWFVGUkUvvj99TrU2ktu0CzqZgV/ktpffxYaZfe3t5/gPJhZGSExsb7eLi6kBSxkUJdJObsJAoORRG/ajFn40KEh2mUpMVSb0jnt9sl7A3dxM3KW4yK9nnx4oWS5d8ZygnpZZXJxMHIbTSJUmsyDnJ0awAHA1fyU/h29LERXP8hgYrM72i6lkPR2WPUmmuVb1nGy8QUDyfV09Mjemuce+XFFKUloI8KJj0ikJQtgZzftZXyYxruGk9QZzhKpf4Id6/m0N31VPThoAD2vA2UkjsNiI5/WHeLC9ooju8K4JwmBG3wZ2i/WYUhOZrrpw9hTI2hvjCdDks1HZ2dSmyviFVJ6puSUNvIKI8fNJCzfydZsUHodgQQF7gMTdAy0sLXcS1DQ0NxBpbSM1ReyuVZ1590iwr/E6hAxUur+E+2Nt0n/6SWw5HBRKz2Y/dK8fWEB1Kl11GTm8q9K1m0VBXwS1sbj9o7UclsFPVK9f5L3aLHBkXjPu16zqmkWJLD1nF4+xpyNTspy9pP9c+HMecfp0L4+cBiwWxpmgJ8Qz2vT61PqNJcx6mUAxgOhZAZG0zGng1cPhpDzYUUTHotpaeTaW5+gvm+BZU8WUUSMjkWktA/urq402jhRlU1xtw8UsLXc2pfEJl7gziXsIXrwsfyTA2my0baO55xt+kRfwEJbduHwyLsagAAAABJRU5ErkJggg==","aspectRatio":1,"src":"/static/a13676f620ffec937bb93404086aee88/38758/author.png","srcSet":"/static/a13676f620ffec937bb93404086aee88/38758/author.png 100w","srcWebp":"/static/a13676f620ffec937bb93404086aee88/5b61a/author.webp","srcSetWebp":"/static/a13676f620ffec937bb93404086aee88/5b61a/author.webp 100w","sizes":"(max-width: 100px) 100vw, 100px"}}},"pageContext":{"slug":"/introduction-to-metaprogramming-in-javascript"}},"staticQueryHashes":["206548925","2876447390","2876447390","304260960","3640134886","372033979","4000121635","4000121635","480822984","752411102"]}