{"id":335102,"date":"2022-06-28T21:00:22","date_gmt":"2022-06-28T21:00:22","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=335102"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=335102","title":{"rendered":"<span>\u041a\u0430\u043a \u044f \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b JS \u0432 \u0441\u0432\u043e\u0439 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0434\u0432\u0438\u0436\u043e\u043a<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0421++ \u0438\u0433\u0440\u044b \u0434\u043e\u043b\u0433\u043e \u0438 \u0434\u043e\u0440\u043e\u0433\u043e, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e \u043f\u0435\u0440\u0444\u043e\u043c\u0430\u043d\u0441\u0443 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u043e. \u041d\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0451 \u0432 \u0438\u0433\u0440\u0430\u0445, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e 2D. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u0441\u044f\u043a\u0438\u0435 \u043e\u043a\u043e\u0448\u0435\u0447\u043a\u0438 \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442 \u0442\u044f\u0436\u0435\u043b\u044b\u0445 \u0440\u0430\u0441\u0447\u0435\u0442\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438. \u0410 \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u043e 80% \u0432\u0441\u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043c\u0430 \u043a\u043e\u0434\u0430. \u0418 \u043d\u0430 \u0421++ \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0430 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435 &#8212; \u0435\u0441\u043b\u0438 \u0433\u0434\u0435-\u0442\u043e \u043a\u0440\u0435\u0448\u0438\u0442\u0441\u044f \u0438\u043b\u0438 \u0431\u0430\u0436\u0438\u0442, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. <\/p>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442\u044b &#8212; \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0431\u0435\u0434. \u0418 \u043a\u043e\u0434 \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0449\u0435, \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0434\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 (\u0434\u0430-\u0434\u0430, \u0441\u0442\u043e\u0440\u044b \u044f\u0432\u043d\u043e \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u044e\u0442 \u044d\u0442\u043e, \u043d\u043e \u043d\u0430 \u0434\u0435\u043b\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u0434\u0435\u043b\u0430\u044e\u0442).<\/p>\n<h2>\u041f\u043e\u0447\u0435\u043c\u0443 JS?<\/h2>\n<p>\u0412 \u043c\u0438\u0440\u0435 \u043f\u043e\u043b\u043d\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 &#8212; LUA, LUAu, Squirrel, AngleScript \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u041e\u0431\u044b\u0447\u043d\u043e \u0432 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0434\u0432\u0438\u0436\u043a\u0438 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442 LUA. \u041e\u043d \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439, \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439. \u041d\u043e \u043d\u0430 \u043d\u0435\u043c \u043a\u0430\u0442\u0430\u0441\u0442\u0440\u043e\u0444\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0430\u043b\u043e \u043f\u0438\u0448\u0443\u0442 \u043b\u044e\u0434\u0435\u0439. \u0414\u0430, \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0438\u0437\u0443\u0447\u0438\u0442\u044c. \u041d\u043e \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0438 \u0443\u0436\u0435 \u0437\u043d\u0430\u0442\u044c &#8212; \u0434\u0432\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0440\u0430\u0437\u043d\u0438\u0446\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0438\u0441\u043a\u0430\u043b \u0447\u0442\u043e-\u0442\u043e \u0443\u0436\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u043e\u0435, \u043d\u043e \u0432 \u0442\u043e\u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u042f \u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043d\u0430 \u0434\u0432\u0430 \u044f\u0437\u044b\u043a\u0430 &#8212; JS \u0438 C#. \u0420\u0430\u043d\u0442\u0430\u0439\u043c\u044b \u0434\u043b\u044f \u043e\u0431\u043e\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0442\u044f\u0436\u0435\u043b\u044b\u0435. \u0414\u043b\u044f JS \u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0441\u0430\u043c\u044b\u043c \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440 google V8, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b \u043c\u0438\u043d\u0438\u043c\u0443\u043c 6mb \u0431\u0438\u043d\u0430\u0440\u044f, \u0447\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043c\u043d\u043e\u0433\u043e \u0432 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u043c \u0433\u0435\u0439\u043c\u0434\u0435\u0432\u0435. C# \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f, mono \u0441\u0442\u0430\u043b \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0438 \u0442\u043e\u0436\u0435 \u0431\u044b\u043b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u043c. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0447\u0442\u043e \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0446\u0435\u043b\u0430\u044f \u0430\u0440\u043c\u0438\u044f Unity-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043f\u043b\u043e\u0442\u043d\u043e \u043f\u043e\u0434\u0441\u0435\u0432\u0448\u0438\u0445 \u043d\u0430 C#. \u041d\u043e \u0435\u0433\u043e \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0442\u043e\u0436\u0435 \u0431\u044b\u043b \u0442\u044f\u0436\u0435\u043b\u044b\u043c \u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u043c \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0418\u0437 \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445 \u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u043a\u043b\u043e\u043d\u044f\u043b\u0441\u044f \u043a JS \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c:<\/p>\n<ul>\n<li>\n<p>\u044d\u0442\u043e \u044f\u0437\u044b\u043a \u043d\u0435 \u043a\u0430\u043a \u0432 Unity;<\/p>\n<\/li>\n<li>\n<p>web-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435, \u0438 \u043e\u043d\u0438 \u0442\u043e\u0436\u0435 \u0445\u043e\u0442\u044f\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0433\u0440\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 JS \u043d\u0435 \u0441\u0442\u0440\u043e\u0433\u043e \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439, \u043d\u043e \u0435\u0441\u0442\u044c TypeScript, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 JS, \u0438 \u043e\u043d \u0443\u0436\u0435 \u0441\u0442\u0440\u043e\u0433\u043e \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432\u043d\u0435\u0434\u0440\u0438\u0432 JS, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0449\u0435 \u0438 TypeScript.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0442\u043e\u043c \u043a\u0430\u043a-\u0442\u043e \u043f\u043e\u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043b \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435, \u0442\u043e\u0436\u0435 \u0438\u0437 \u0441\u0442\u0443\u0434\u0438\u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0438\u0433\u0440. \u0418 \u043e\u043d \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u0443\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442 \u043f\u0438\u0448\u0443\u0442 \u043d\u0430 JS \u043d\u0430 \u043f\u043b\u044e\u0441\u043e\u0432\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0435. \u041c\u043d\u0435, \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0441\u0432\u043e\u0435\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430 \u0441\u0442\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0447\u0442\u043e \u0434\u0430 \u043a\u0430\u043a.<\/p>\n<p>\u041e\u043d \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u0447\u0442\u043e \u0443 \u043d\u0438\u0445 \u0434\u0432\u0438\u0436\u043e\u043a, \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 Cocos2D, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0421++, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u0442\u0440\u043e\u0435\u043d JS-\u0434\u0432\u0438\u0436\u043e\u043a <a href=\"https:\/\/jerryscript.net\/\" rel=\"noopener noreferrer nofollow\">JerryScript<\/a>. \u0411\u0430\u043c! \u041e \u0442\u0430\u043a\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0435 \u044f \u043d\u0435 \u0437\u043d\u0430\u043b. \u041e\u043d \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439, \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0418\u0437 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u044f \u0432\u0438\u0434\u0435\u043b \u0442\u043e\u043b\u044c\u043a\u043e <a href=\"https:\/\/bellard.org\/quickjs\/\" rel=\"noopener noreferrer nofollow\">QuickJS<\/a>, \u043d\u043e \u0443 \u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f. \u0418 \u044f \u0441\u0442\u0430\u043b \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435. \u0412\u0441\u0435 \u0436\u0435 \u0435\u0441\u043b\u0438 \u0446\u0435\u043b\u0430\u044f \u043a\u043e\u043d\u0442\u043e\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0435\u0433\u043e \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435, \u044d\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u0434\u0430 \u0437\u043d\u0430\u0447\u0438\u0442.<\/p>\n<p>\u042f \u0431\u0435\u0433\u043b\u043e \u0438\u0437\u0443\u0447\u0438\u043b API \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0441\u043e\u0431\u0440\u0430\u043b \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0432\u0441\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0441 \u043f\u043e\u043b \u043f\u0438\u043d\u043a\u0430. \u042d\u0442\u043e \u043a\u0440\u0443\u0442\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c V8 \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0434\u043e\u043b\u0433\u043e.<\/p>\n<h2>\u041a\u0430\u043a \u0432\u0441\u0435 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e<\/h2>\n<p>\u0418\u0442\u0430\u043a, \u044f \u0432\u044b\u0434\u0435\u043b\u0438\u043b 2 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0432\u0435\u0449\u0438 \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0438\u043d\u0433\u0430: \u044d\u0442\u043e \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430 \u0438 \u043a\u043b\u0430\u0441\u0441-\u043e\u0431\u0435\u0440\u0442\u043a\u0430 \u043d\u0430\u0434 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p><a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/8351008e36bbdc6243a49e23b6fb96a627002138\/Framework\/Sources\/o2\/Scripts\/ScriptEngine.h#L41\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430<\/a> \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f: \u043e\u043d\u0430 \u0443\u043c\u0435\u0435\u0442 \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441, \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0447\u0438\u0441\u0442\u043a\u0443 \u043c\u0443\u0441\u043e\u0440\u0430 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a.<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u043e\u0434\u0438\u043d \u0438\u0437 \u043f\u043b\u044e\u0441\u043e\u0432 jerry \u0435\u0449\u0435 \u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=Samsung.iotjs-vscode-extension\" rel=\"noopener noreferrer nofollow\">\u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f VS Code<\/a>, \u0438 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043d\u0435\u043a\u0442 \u0438\u0437 \u043a\u043e\u0434\u0430. \u0412\u0430\u0443\u043b\u044f, \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u043f\u0440\u0438\u0446\u0435\u043f\u0438\u043b\u0441\u044f, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0442\u043e \u0438 \u043a\u0430\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043c\u0438\u043d\u0443\u0441 &#8212; \u043e\u043d \u043f\u043b\u043e\u0445\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0422\u043e\u0447\u043d\u0435\u0435, \u043e\u043d \u0438\u0445 \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043f\u0438\u0448\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e [object] \u0438 \u0432\u0441\u0435. \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0430\u0432\u0442\u043e\u0440\u044b jerry \u0437\u0434\u0435\u0441\u044c \u043a\u0430\u043a-\u0442\u043e \u043f\u043e\u043b\u0435\u043d\u0438\u043b\u0438\u0441\u044c \u0438 \u043d\u0435 \u0434\u043e\u0432\u0435\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0434\u043e \u043a\u043e\u043d\u0446\u0430. \u0427\u0442\u043e \u0436, \u043d\u0435 \u0441\u0442\u0440\u0430\u0448\u043d\u043e, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u0430\u043c\u0438!<\/p>\n<h3>ScriptValue \u0432\u0441\u0435\u043c\u0443 \u0433\u043e\u043b\u043e\u0432\u0430!<\/h3>\n<p>\u0423 jerry \u0434\u043b\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>jerry_value_t<\/code>. \u0422\u0430\u043a \u043a\u0430\u043a \u0432\u0441\u0435 API C-\u0448\u043d\u043e\u0435, \u0442\u043e \u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0435\u0442. \u0415\u0441\u0442\u044c \u043a\u0443\u0447\u0430 C-\u0448\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 C-\u0448\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u044f \u043e\u0431\u0435\u0440\u043d\u0443\u043b \u0432 \u0441\u0432\u043e\u0439 \u043a\u043b\u0430\u0441\u0441, <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/8351008e36bbdc6243a49e23b6fb96a627002138\/Framework\/Sources\/o2\/Scripts\/ScriptValueDef.h#L17\" rel=\"noopener noreferrer nofollow\">ScriptValue<\/a>.<\/p>\n<p>\u041a\u0430\u0436\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043b\u0430\u0441\u0441, \u043d\u043e \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u0435:<\/p>\n<ul>\n<li>\n<p>\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0443\u044e \u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043a\u043b\u0430\u0441\u0441\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0421++ \u043e\u0431\u044a\u0435\u043a\u0442;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0447\u0442\u043e \u0437\u0430 \u0442\u0438\u043f \u0442\u0430\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0443\u043c\u0435\u0442\u044c \u043a\u0430\u0441\u0442\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432 \u043d\u0443\u0436\u043d\u044b\u0439 \u0442\u0438\u043f;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0447\u0442\u043e \u0437\u0430 \u0442\u0438\u043f \u0421++ \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u043d\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u043e\u043b\u044f\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432: \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c, \u0443\u0434\u0430\u043b\u044f\u0442\u044c, \u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043a\u0430\u043a \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u0413\u0434\u0435-\u0442\u043e \u0442\u0430\u043c \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0437\u0430 \u0441\u0435\u0440\u0434\u0446\u0435 \u043e\u0434\u0438\u043d \u0438\u0437 \u0430\u0434\u0435\u043f\u0442\u043e\u0432 SOLID&#8230; \u041d\u043e \u044d\u0442\u043e API \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u0432\u0441\u0435 \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0443\u043c\u0435\u0442\u044c. \u0412\u0435\u0434\u044c \u0432 JS \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e. \u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441 \u0442\u0435\u043c \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0432 JS.<\/p>\n<p>\u0412 \u043d\u0435\u0439 \u043c\u043e\u0436\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0439 \u0442\u0438\u043f (int, number, string, bigInt), \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u043b\u0438 \u043c\u0430\u0441\u0441\u0438\u0432. \u041f\u043e \u0441\u0443\u0442\u0438 \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043c\u0438\u043c\u0438\u043a\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f. \u0412 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0442\u0438\u043f\u0430, \u0438 \u043e\u043d\u0430 \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0439 \u0442\u0438\u043f.<\/p>\n<h3>\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/h3>\n<p>ScriptValue \u0445\u0440\u0430\u043d\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 <code>jerry_value_t<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u0441\u0443\u0442\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u0438\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 jerry. \u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u044d\u0442\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>\u0415\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c. \u0418\u043d\u0430\u0447\u0435 &#8212; \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435. Jerry \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0441\u044b\u043b\u043e\u043a, \u0438 \u0441\u043a\u0430\u0436\u0435\u0442 \u0442\u0435\u0431\u0435 \u0447\u0442\u043e \u0442\u044b \u0437\u0430\u0431\u044b\u043b \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0433\u043e-\u0442\u043e. \u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>jerry_create_undefined<\/code> \u0438\u043b\u0438 <code>jerry_create_object<\/code>. \u041f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c, \u0432\u044b\u0437\u0432\u0430\u0432 <code>jerry_release_value<\/code>.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0442\u0438\u043f\u044b \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f, \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430) \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>jerry_acquire_value<\/code>.<\/p>\n<p>\u041e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u044d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0433\u0434\u0435 \u043d\u0443\u0436\u043d\u043e \u0438 \u0443\u0436\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0431\u043e\u0442\u0438\u0442\u0441\u044f \u043e\u0431 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u0438 <code>jerry_value_t<\/code>.<\/p>\n<h3>\u041f\u0440\u043e\u0441\u0442\u044b\u0435 \u0442\u0438\u043f\u044b<\/h3>\n<p>\u0414\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0441\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u0447\u0442\u043e \u0438 \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0433\u043e <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/master\/Framework\/Sources\/o2\/Utils\/Serialization\/DataValue.h\" rel=\"noopener noreferrer nofollow\">DataValue<\/a>.<\/p>\n<p>\u0412 \u0441\u0430\u043c\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/8351008e36bbdc6243a49e23b6fb96a627002138\/Framework\/Sources\/o2\/Scripts\/ScriptValueDef.h#L65\" rel=\"noopener noreferrer nofollow\">operator T<\/a> \u0438 <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/8351008e36bbdc6243a49e23b6fb96a627002138\/Framework\/Sources\/o2\/Scripts\/ScriptValueDef.h#L65\" rel=\"noopener noreferrer nofollow\">operator=(T)<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f \u043b\u044e\u0431\u043e\u0439 \u0442\u0438\u043f. \u0412\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0430 <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/8351008e36bbdc6243a49e23b6fb96a627002138\/Framework\/Sources\/o2\/Scripts\/ScriptValueDef.h#L24\" rel=\"noopener noreferrer nofollow\">Converter<\/a>. \u0414\u0430\u043b\u0435\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 <code>T<\/code> \u043f\u0438\u0448\u0443\u0442\u0441\u044f <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/8351008e36bbdc6243a49e23b6fb96a627002138\/Framework\/Sources\/o2\/Scripts\/JerryScript\/ScriptValueConverters.h#L86\" rel=\"noopener noreferrer nofollow\">\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 Converter<\/a> \u0441\u043e \u0432\u0441\u044f\u043a\u0438\u043c\u0438 SFINAE-\u0448\u0442\u0443\u043a\u043e\u0432\u0438\u043d\u0430\u043c\u0438.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">template&lt;typename _type, typename _enable = void> struct Converter { static constexpr bool isSupported = true; using __type = typename std::conditional&lt;std::is_same&lt;void, _type>::value, int, _type>::type;  static void Write(const __type&amp; value, ScriptValue&amp; data); static void Read(__type&amp; value, const ScriptValue&amp; data); };    template&lt;typename _key, typename _value> struct Converter&lt;Map&lt;_key, _value>> { static constexpr bool isSupported = true;  static void Write(const Map&lt;_key, _value>&amp; value, ScriptValue&amp; data) { data.jvalue = jerry_create_object();  for (auto&amp; kv : value) data.SetProperty(ScriptValue(kv.first), ScriptValue(kv.second)); }  static void Read(Map&lt;_key, _value>&amp; value, const ScriptValue&amp; data) { if (data.GetValueType() == ValueType::Object) { value.Clear(); data.ForEachProperties([&amp;](const ScriptValue&amp; name, const ScriptValue&amp; value) { value[name.GetValue&lt;_key>()] = name.GetValue&lt;_value>(); }); } } };<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043f\u0440\u0438 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0421 \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 API jerry. \u0421\u043e \u0432\u0441\u0435\u043c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0443\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435.<\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0442\u0430\u043a\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u043a\u0430\u043a <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/master\/Framework\/Sources\/o2\/Utils\/Math\/Vector2.h\" rel=\"noopener noreferrer nofollow\">Vec2 <\/a>\u0438\u043b\u0438 <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/master\/Framework\/Sources\/o2\/Utils\/Math\/Rect.h\" rel=\"noopener noreferrer nofollow\">Rect<\/a>. \u0423 \u043d\u0438\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u043e\u043b\u044f \u0442\u0438\u043f\u0430 <code>x, y<\/code>; \u0438 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u041d\u0443\u0436\u043d\u043e \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u0438 \u0436\u0435 \u043f\u043e\u043b\u044f \u0431\u044b\u043b\u0438 \u0438 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435, \u0438 \u0431\u044b\u043b \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b.<\/p>\n<p>\u041f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0432 JS \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u0442.\u043a. \u044d\u0442\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u043e\u0432\u0435\u0440\u0445\u0435\u0434. \u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u043c\u0435\u0436\u0434\u0443 JS \u0438 C++ \u043d\u0443\u0436\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0435 \u0441\u0442\u044b\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u043d\u0443\u0442\u0440\u0438 JS \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u0435\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0435\u043c \u0441 \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u0430\u043c\u0438 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0410 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0443\u0436\u0435 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0438\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\/\u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u0430.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0438\u0448\u0435\u043c <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/master\/Framework\/Assets\/Scripts\/Math.js\" rel=\"noopener noreferrer nofollow\">JS-\u043a\u043b\u0430\u0441\u0441\u044b \u044d\u0442\u0438\u0445 \u0442\u0438\u043f\u043e\u0432<\/a>, \u0447\u0442\u043e\u0431\u044b \u0443\u043c\u0435\u0442\u044c \u0441 \u043d\u0438\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0438\u0445 \u043a\u0430\u043a-\u0442\u043e \u0437\u0430\u043c\u0430\u043f\u0438\u0442\u044c \u043d\u0430 \u0421++ \u043e\u0431\u044a\u0435\u043a\u0442\u044b. \u0417\u0434\u0435\u0441\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u0438 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0441 \u0432 JS \u0438 \u043a\u0430\u043a \u043e\u043d \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0432\u043d\u0443\u0442\u0440\u0438.<\/p>\n<h3>\u041a\u043b\u0430\u0441\u0441\u044b \u0432 JS<\/h3>\n<p>\u041a\u043b\u0430\u0441\u0441\u044b \u0432 JS &#8212; \u044d\u0442\u043e \u0447\u0438\u0441\u0442\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0430\u0445\u0430\u0440. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0438\u0445 \u043d\u0435\u0442. \u041e\u0431\u044a\u0435\u043a\u0442\u044b \u043a\u043b\u0430\u0441\u0441\u043e\u0432 &#8212; \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441 \u043f\u043e\u043b\u044f\u043c\u0438 \u0432\u043d\u0443\u0442\u0440\u0438, \u043d\u043e \u0441 \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 \u043d\u0435\u043a\u0438\u0439 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f. \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u043e\u0434\u0438\u043d \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430. \u0410 \u0441\u0430\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u044b &#8212; \u044d\u0442\u043e \u0434\u0430\u0436\u0435 \u043d\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 constructor \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0421\u0430\u043c\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 &#8212; \u044d\u0442\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0430\u043a\u0443\u044e constructor-\u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"javascript\">class MyClass  {    constructor() { this.abc = \"abc\" }    myFunction() { print(this.abc) }  }<\/code><\/pre>\n<p>\u041e\u043d \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0435\u0431\u044f \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043a\u043e\u0435:<\/p>\n<pre><code class=\"javascript\">MyClass = (function() {    function MyClass() { this.abc = \"abc\" }    MyClass.prototype.myFunction = function() { print(this.abc) }      return MyClass;  }) ();<\/code><\/pre>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0445\u0438\u0442\u0440\u043e, \u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f. \u041c\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0435\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c. \u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u043f\u0440\u044f\u0442\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0441\u0435\u0445. \u0422\u0430\u043a\u043e\u0439 \u0432\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0441\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u043e\u0442 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0441\u0442\u0438. \u0412\u043d\u0443\u0442\u0440\u0438 \u043c\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u043c, \u0442.\u043a. \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 this. \u0414\u0430\u043b\u0435\u0435 \u043a \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0443 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u043c \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 \u043a\u043b\u0430\u0441\u0441\u0430) \u043f\u0440\u0438\u0446\u0435\u043f\u043b\u044f\u0435\u043c \u043d\u0430\u0448\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u0418 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u044d\u0442\u0443 \u0445\u0438\u0442\u0440\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440.<\/p>\n<p>\u0412 \u0441\u0430\u043c\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u0435\u0441\u0442\u044c \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <code>new<\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430\u043c\u0438, \u0434\u0435\u043b\u0430\u044f \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n<p>\u0421\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0435, \u0437\u0430\u0447\u0435\u043c, \u0447\u0435\u0440\u0442 \u0442\u0435\u0431\u044f \u0434\u0435\u0440\u0438, \u043d\u0430\u043c \u044d\u0442\u043e? \u041d\u043e \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u043e\u043a\u0438\u043d\u0443\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u044b \u0432 JS \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442.<\/p>\n<h3>JS \u043a\u043b\u0430\u0441\u0441 \u0432 \u0421++ \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442<\/h3>\n<p>\u0412\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043a \u0442\u0435\u043c\u0435 \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0430 <code>Vec2<\/code> \u0438 <code>Rect<\/code> \u0432 JS \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 C++ \u0432 JS, \u0442\u043e \u0432 JS \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043b\u0430\u0441\u0441 <code>Vec2<\/code>, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0432 JS. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u0443\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0443\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u043e\u043b\u044f (x \u0438 y, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440) \u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043a\u0430\u043a \u0438 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u043a\u043b\u0430\u0441\u0441\u0430 <code>Vec2<\/code>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0438\u0437 JS, \u0447\u0442\u043e \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0441\u0442\u044b\u043b\u044c\u043d\u043e (\u043d\u0435 \u043d\u0430\u0448\u0435\u043b \u043d\u0443\u0436\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 API): <code>o2Scripts.Eval(\"Vec2.prototype\")<\/code>. \u0417\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0435\u0433\u043e \u0432 <code>ScriptValue<\/code> \u0447\u0435\u0440\u0435\u0437 <code>jerry_set_prototype<\/code>. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/master\/Framework\/Sources\/o2\/Utils\/Math\/Vertex2.h\" rel=\"noopener noreferrer nofollow\">Vec2 <\/a>\u0438\u0437 \u0421++ \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/c844df77f79cd176add2d41936d3e2ab901a7aa3\/Framework\/Assets\/Scripts\/Math.js#L1\" rel=\"noopener noreferrer nofollow\">Vec2 <\/a>\u0443\u0436\u0435 \u0432 JS, \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>\u0418\u0437 JS \u0432 C++ \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e, \u043c\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u043c \u0442\u0438\u043f \u0438\u0437 \u043f\u043b\u044e\u0441\u043e\u0432 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0435\u043c \u043f\u043e\u043b\u044f \u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (<code>x, y<\/code>):<\/p>\n<pre><code class=\"cpp\">template&lt;> struct Converter&lt;Vec2F> { static constexpr bool isSupported = true;  static void Write(const Vec2F&amp; value, ScriptValue&amp; data) { data.jvalue = jerry_create_object(); data.SetPrototype(*ScriptValuePrototypes::GetVec2Prototype()); data.SetProperty(\"x\", ScriptValue(value.x)); data.SetProperty(\"y\", ScriptValue(value.y)); }  static void Read(Vec2F&amp; value, const ScriptValue&amp; data) { value.x = data.GetProperty(\"x\"); value.y = data.GetProperty(\"y\"); } };<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0421++ \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 \u0441\u043a\u0440\u0438\u043f\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043a\u043b\u0430\u0441\u0441:<\/p>\n<pre><code class=\"cpp\">class Test: public ISerializable {     SERIALIZABLE(TestInside);      public:     float mFloat = 1.2f; \/\/ @SERIALIZABLE @SCRIPTABLE     String mString = String(\"bla bla\"); \/\/ @SERIALIZABLE @SCRIPTABLE     bool mBool = true; \/\/ @SERIALIZABLE @SCRIPTABLE         ComponentRef mComponent; \/\/ @SERIALIZABLE @SCRIPTABLE     Ref&lt;RigidBody> mRigidBody; \/\/ @SERIALIZABLE @SCRIPTABLE      public:     Test(); \/\/ @SCRIPTABLE          int DoSmth(float param); \/\/ @SCRIPTABLE };<\/code><\/pre>\n<p>\u041d\u0443\u0436\u043d\u043e \u0443\u043c\u0435\u0442\u044c \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442, \u0443\u043c\u0435\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043f\u043e\u043b\u044f\u043c \u043a\u043b\u0430\u0441\u0441\u0430 \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u044b.<\/p>\n<p>jerry \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u043e\u043a\u0438\u043d\u0443\u0442\u044c \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0432\u043e\u0438 \u0434\u0430\u043d\u043d\u044b\u0435.  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<pre><code class=\"cpp\"> void jerry_set_object_native_pointer (const jerry_value_t obj_val,                                         void *native_pointer_p,                                         const jerry_object_native_info_t *native_info_p);<\/code><\/pre>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<ul>\n<li>\n<p><code>const jerry_value_t obj_val<\/code> &#8212; \u044d\u0442\u043e, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432 \u043a\u0430\u043a\u043e\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0442\u0443\u0442 \u0432\u0441\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e;<\/p>\n<\/li>\n<li>\n<p><code>void *native_pointer_p<\/code> &#8212; \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u0438\u0448\u0442\u044f\u043a;<\/p>\n<\/li>\n<li>\n<p><code>const jerry_object_native_info_t *native_info_p<\/code> &#8212; \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 &#8212; \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u0438 \u0441\u0430\u043c\u043e\u0435 \u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u0435. \u042d\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043d\u0435\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a, \u043e\u0431\u0449\u0438\u0439 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 <code>native_pointer_p<\/code>.<\/p>\n<p>\u042d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a \u043d\u0443\u0436\u0435\u043d \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u043b Garbage Collector, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u043d\u0435\u043a\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0440\u0435\u0448\u0438\u0442\u044c \u0443\u0431\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0430 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u043d\u0430\u0448\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>\u041d\u043e \u0432\u043e\u0442 \u043d\u0435\u0437\u0430\u0434\u0430\u0447\u0430, \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u044d\u0442\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>Free<\/code> &#8212; \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u0430\u044f. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0447\u0442\u043e \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0431\u043e\u043a\u0430. \u041d\u0435\u0443\u0434\u043e\u0431\u043d\u043e.<\/p>\n<p>\u041d\u043e \u0435\u0441\u0442\u044c \u043e\u0431\u0445\u043e\u0434\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0445\u043e\u0442\u044f \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0442\u0440\u0430\u0442\u043d\u043e\u0435 \u0432 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445. \u0418\u0442\u0430\u043a, \u043c\u044b \u0438 \u043f\u0440\u0430\u0432\u0434\u0430 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/c844df77f79cd176add2d41936d3e2ab901a7aa3\/Framework\/Sources\/o2\/Scripts\/JerryScript\/ScriptValueBase.h#L141\" rel=\"noopener noreferrer nofollow\">\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0431\u043b\u043e\u043a<\/a> \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0432\u043e\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439. \u041d\u043e \u0441\u0432\u043e\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0432 \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u043d\u044b\u0439 <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/c844df77f79cd176add2d41936d3e2ab901a7aa3\/Framework\/Sources\/o2\/Scripts\/JerryScript\/ScriptValueBase.h#L25\" rel=\"noopener noreferrer nofollow\">\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 IDataContainer<\/a>, \u0430 \u0432 \u043d\u0435\u043c \u0443\u0436\u0435 \u0445\u0440\u0430\u043d\u0438\u043c \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e.<\/p>\n<details class=\"spoiler\">\n<summary>\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0431\u043b\u043e\u043a<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">struct IDataContainer { bool isDataOwner = true;  virtual ~IDataContainer() = default;  virtual void* GetData() const { return nullptr; } virtual IObject* TryCastToIObject() const { return nullptr; } virtual const Type* GetType() const { return nullptr; } };  ...    struct DataContainerDeleter { jerry_object_native_info_t info;  DataContainerDeleter(); static void Free(void* ptr); };  static DataContainerDeleter&amp; GetDataDeleter();  ...    ScriptValueBase::DataContainerDeleter&amp; ScriptValueBase::GetDataDeleter() { static DataContainerDeleter deleter; return deleter; }  ScriptValueBase::DataContainerDeleter::DataContainerDeleter() { info.free_cb = &amp;Free; }  void ScriptValueBase::DataContainerDeleter::Free(void* ptr) { delete (IDataContainer*)ptr; }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p><a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/c844df77f79cd176add2d41936d3e2ab901a7aa3\/Framework\/Sources\/o2\/Scripts\/JerryScript\/ScriptValueImpl.h#L86\" rel=\"noopener noreferrer nofollow\">\u0417\u0434\u0435\u0441\u044c<\/a> \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u043a \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0414\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c \u0432 <code>ScriptValue<\/code> \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439:<\/p>\n<ul>\n<li>\n<p><code>bool IsObjectContainer() const;<\/code> &#8212; \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435;<\/p>\n<\/li>\n<li>\n<p><code>const Type* GetObjectContainerType() const;<\/code> &#8212; \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0438\u043f \u0445\u0440\u0430\u043d\u0438\u043c\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p><code>void* GetContainingObject() const;<\/code> &#8212; \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u044b\u0440\u043e\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u043e \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c. \u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e, \u0442.\u043a. \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 \u043d\u0435 \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0436\u0435\u0441\u0442\u043a\u043e \u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.<\/p>\n<p>\u0421\u0443\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438, \u0433\u0434\u0435 \u043f\u0430\u043c\u044f\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0435\u0441\u0442\u044c GC \u0432 JS, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u043e\u0436\u0435 \u043a\u0430\u043a-\u0442\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0430\u043c\u044f\u0442\u044c\u044e. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 GS \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u0438 \u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d. \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u043c, \u0432\u043b\u0430\u0434\u0435\u0435\u0442 \u043b\u0438 <code>ScriptValue<\/code> \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c \u0438\u043b\u0438 \u043d\u0435\u0442. \u0415\u0441\u043b\u0438 \u0432\u043b\u0430\u0434\u0435\u0435\u0442, \u0442\u043e \u0435\u0433\u043e \u0441\u0443\u0434\u044c\u0431\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0432\u043b\u0430\u0441\u0442\u043d\u0430 GC. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 &#8212; \u0442\u043e <code>ScriptValue<\/code> \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442, \u043d\u043e \u043d\u0438\u043a\u0430\u043a \u0435\u0433\u043e \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442.<\/p>\n<p>\u041e\u0442\u0441\u044e\u0434\u0430 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u043a\u0438\u043d\u0443\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0438 \u0443\u0431\u0438\u043b\u0438 \u0435\u0433\u043e. \u0421\u043a\u0440\u0438\u043f\u0442 \u043d\u0435 \u0443\u0437\u043d\u0430\u0435\u0442 \u043e\u0431 \u044d\u0442\u043e\u043c. \u0418\u043b\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u043b\u0430\u0434\u0435\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c, \u0430 \u043c\u044b \u0435\u0433\u043e \u043f\u0440\u0438\u0431\u0438\u043b\u0438 \u0438\u0437 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430.<\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043f\u043e \u0441\u0443\u0442\u0438 \u043d\u0430 \u0441\u043e\u0432\u0435\u0441\u0442\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430. \u041d\u043e, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c &#8212; \u0447\u0435\u0440\u0435\u0437 \u0443\u043c\u043d\u044b\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438. \u0415\u0441\u043b\u0438 \u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u043b\u0430\u0434\u0435\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c, \u0442\u043e \u043e\u043d \u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0438\u043b\u044c\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 &#8212; \u0441\u043b\u0430\u0431\u0443\u044e. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438 \u0441\u043a\u0440\u0438\u043f\u0442, \u0438 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u0434 \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u044b \u043e\u0442 \u043d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430.<\/p>\n<p>\u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u044f \u0441\u0434\u0435\u043b\u0430\u044e \u043a\u043e\u0433\u0434\u0430 \u0432\u0435\u0441\u044c \u0434\u0432\u0438\u0436\u043e\u043a \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0443 \u043d\u0430 \u0443\u043c\u043d\u044b\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438. \u0414\u0430 \u0434\u0430, \u0443 \u043c\u0435\u043d\u044f \u0440\u0443\u0447\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u044c\u044e, \u0438 \u043e\u043d\u043e \u043c\u043d\u0435 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f&#8230;<\/p>\n<h3>\u041f\u043e\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u043e\u0432<\/h3>\n<p>\u0422\u0430\u043a, \u043f\u0440\u043e\u043a\u0438\u043d\u0443\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442. \u041d\u043e \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0441 \u043d\u0438\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0442.\u043a. \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u0431\u0435\u0437 \u043f\u043e\u043b\u0435\u0439 \u0438 \u043f\u043b\u044e\u0441\u043e\u0432\u044b\u0435 \u043f\u043e\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0430 \u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0441\u043e\u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c. \u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0438\u043d\u0434\u0438\u043d\u0433 \u043f\u043e\u043b\u0435\u0439 \u043a\u043b\u0430\u0441\u0441\u0430 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442.<\/p>\n<p>\u041f\u043e \u0441\u0443\u0442\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c property, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0441 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c \u043f\u043e\u043b\u044f \u0438\u0437 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041b\u0438\u0431\u043e \u044d\u0442\u0430 property \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0435\u0440\u0442\u043a\u043e\u0439 \u043d\u0430\u0434 \u043f\u0430\u0440\u043a\u043e\u0439 setter\/getter.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u043e\u0435 property, \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>jerry_define_own_property<\/code>. \u041e\u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u043f\u0435\u0440\u0442\u0438 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442, \u043d\u043e \u0441 \u043d\u0435\u043a\u0438\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u043e\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 &#8212; <code>jerry_property_descriptor_t<\/code>.<\/p>\n<p>\u041e\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c setter \u0438 getter \u043f\u043e\u043b\u044f. \u0418\u0445 \u043c\u044b \u0438 \u0437\u0430\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c. \u042d\u0442\u0438 setter \u0438 getter &#8212; \u0442\u043e\u0436\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043e\u0439.<\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043d\u0430 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u0438\u0446\u0435\u043f\u0438\u043c \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c setter&#8217;\u0430 \u0438\u043b\u0438 getter&#8217;\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0443\u0436\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0430 \u043f\u043e\u043b\u0435 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/c844df77f79cd176add2d41936d3e2ab901a7aa3\/Framework\/Sources\/o2\/Scripts\/JerryScript\/ScriptValueImpl.h#L143\" rel=\"noopener noreferrer nofollow\">SetPropertyWrapper()<\/a>. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u044d\u0442\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c property \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 setter \u0438 getter , \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0420\u044f\u0434\u043e\u043c \u0436\u0435 \u0435\u0441\u0442\u044c <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/c844df77f79cd176add2d41936d3e2ab901a7aa3\/Framework\/Sources\/o2\/Scripts\/JerryScript\/ScriptValueImpl.h#L196\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/a> property \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u0430 \u0447\u0435\u0440\u0435\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<h3>\u041f\u0440\u043e\u0431\u0440\u043e\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 C++ \u0432 JS<\/h3>\n<p>\u0422\u0430\u043a, \u0443 \u043d\u0430\u0441 \u0442\u0435\u043f\u0435\u0440\u044c \u0435\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u043f\u043e\u043b\u044f\u043c\u0438. \u041e\u0442\u043a\u0443\u0434\u0430 \u043e\u043d\u0438 \u0442\u0430\u043c \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f &#8212; \u043f\u043e\u043f\u043e\u0437\u0436\u0435, \u0432\u043a\u0440\u0430\u0442\u0446\u0435 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0434\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c jerry API \u0442\u043e\u0436\u0435 \u043d\u0430\u0441 \u043d\u0435 \u0431\u0430\u043b\u0443\u0435\u0442 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e\u043c \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <em>\u0441\u0442\u0430\u0442\u0438\u0447\u043d\u043e\u0439<\/em> \u0444\u0443\u043d\u043a\u0446\u0438\u0438&#8230; \u0421\u043d\u043e\u0432\u0430 \u043f\u0438\u0448\u0435\u043c \u043e\u0431\u0435\u0440\u0442\u043a\u0438!<\/p>\n<p>\u041f\u043e \u0444\u0430\u043a\u0442\u0443 \u043c\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0438\u043d\u0434\u0438\u043c \u043e\u0434\u043d\u0443 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043d\u0430 \u0432\u0441\u0435 \u0442\u0438\u043f\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043d\u043e \u0441\u0430\u043c\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0437\u0430\u043f\u0438\u0445\u0438\u0432\u0430\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442. \u0414\u0430, \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439, \u043c\u043e\u0436\u0435\u0442 \u0435\u0449\u0435 \u0438 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>\u0414\u0435\u043b\u0430\u0435\u043c \u0443\u0436\u0435 \u043f\u043e \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u043c\u0443 \u043f\u0443\u0442\u0438 \u0438 \u0434\u0430\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u043e\u0442 \u0436\u0435 <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/c844df77f79cd176add2d41936d3e2ab901a7aa3\/Framework\/Sources\/o2\/Scripts\/JerryScript\/ScriptValueBase.h#L61\" rel=\"noopener noreferrer nofollow\">\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u0435\u0440\u0442\u043a\u0438 \u043d\u0430\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439<\/a>. \u0410 \u0432 <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/c844df77f79cd176add2d41936d3e2ab901a7aa3\/Framework\/Sources\/o2\/Scripts\/JerryScript\/ScriptValueImpl.cpp#L400\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u0438\u0447\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/a> \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e.<\/p>\n<details class=\"spoiler\">\n<summary>\u0412\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">jerry_value_t ScriptValue::CallFunction(const jerry_value_t function_obj, const jerry_value_t this_val, const jerry_value_t args_p[], const jerry_length_t args_count) { void* ptr = nullptr; jerry_get_object_native_pointer(function_obj, &amp;ptr, &amp;GetDataDeleter().info);  IFunctionContainer* container = dynamic_cast&lt;IFunctionContainer*>((IDataContainer*)ptr); return container->Invoke(this_val, (jerry_value_t*)args_p, args_count); }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041f\u043e\u043a\u0430 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e. \u041d\u043e \u0435\u0449\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b! \u0422\u0443\u0442 \u0432\u0441\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u0412\u0435\u0434\u044c \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 JS \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 &#8212; \u044d\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432 <code>jerry_value_t<\/code> . \u041d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0421++ &#8212; \u044d\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041f\u0430\u0445\u043d\u0435\u0442 \u043c\u0430\u0433\u0438\u0435\u0439 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432.<\/p>\n<p>\u041f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/c844df77f79cd176add2d41936d3e2ab901a7aa3\/Framework\/Sources\/o2\/Scripts\/JerryScript\/ScriptValueImpl.h#L261\" rel=\"noopener noreferrer nofollow\">\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430<\/a> \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437 JS \u0432 <code>tuple&lt;><\/code> \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u041a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u0441\u0442\u0438\u043c \u0447\u0435\u0440\u0435\u0437 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u043a\u0430\u0441\u0442\u0430 \u0432 <code>ScriptValue<\/code>. \u0410 \u0447\u0442\u043e\u0431\u044b \u0438\u0445 \u0432\u0441\u0435 \u043f\u0440\u043e\u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043c\u044b \u0438\u0442\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u044b &#8212; <code>UnpackArgs<\/code>.<\/p>\n<details class=\"spoiler\">\n<summary>UnpackAgs<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\"> template&lt;size_t _i \/*= 0*\/, size_t _j \/*= 0*\/, typename... _args> void ScriptValueBase::UnpackArgs(std::tuple&lt;_args ...>&amp; argst, jerry_value_t* args, int argsCount) { if (_j &lt; argsCount) { ScriptValue tmp; tmp.AcquireValue(args[_j]); std::get&lt;_i>(argst) = tmp.GetValue&lt;std::remove_reference&lt;decltype(std::get&lt;_i>(argst))>::type>();  if constexpr (_i + 1 != sizeof...(_args)) UnpackArgs&lt;_i + 1, _j + 1>(argst, args, argsCount); } }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0438\u043d\u0434\u0435\u043a\u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430! \u0438 \u0442\u0438\u043f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u0412\u043d\u0443\u0442\u0440\u0438 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u044f \u0441 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u043e\u043c \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 <code>tuple<\/code> \u0447\u0435\u0440\u0435\u0437 <code>std::get<\/code>.<\/p>\n<p>\u041e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0432\u0441\u044f\u043a\u043e\u0439 \u0448\u0435\u043b\u0443\u0445\u043e\u0439 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043e\u043a \u0438\u0437 \u0442\u0438\u043f\u043e\u0432, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f &#8212; \u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u0438\u043b\u0438 \u043d\u0435\u0442, \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043d\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0447\u0435\u0440\u0435\u0437 <code>std::apply()<\/code>. \u0412 \u043d\u0435\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 <code>tuple<\/code> \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043c\u044b \u0443\u043c\u0435\u0435\u043c \u043f\u0440\u043e\u043a\u0438\u043d\u0443\u0442\u044c \u043d\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438\u0437 \u0421++ \u0432 JS \u0438 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0435\u0435 \u0438\u0437 JS. \u041d\u0435\u043c\u043d\u043e\u0436\u043a\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430, \u0442\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0435\u0449\u0435 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c this<\/p>\n<h3>\u041f\u0440\u043e\u0431\u0440\u043e\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 JS \u0432 C++<\/h3>\n<p>\u0410 \u043a\u0430\u043a \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0438\u0437 \u0421++ \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438\u0437 JS? \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438\u0434\u0435\u0442 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u043d\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435.<\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432\u044b\u0437\u043e\u0432\u0430 \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432 \u0432\u0438\u0434\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 &#8212; <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/c844df77f79cd176add2d41936d3e2ab901a7aa3\/Framework\/Sources\/o2\/Scripts\/JerryScript\/ScriptValueImpl.cpp#L363\" rel=\"noopener noreferrer nofollow\">InvokeRaw<\/a>. \u0412 \u043d\u0435\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0435\u0440\u0433\u0430\u0435\u043c jerry API &#8212; <code>jerry_call_function<\/code>.<\/p>\n<p>\u041d\u0443 \u0430 \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u0435\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043b\u044e\u0441\u043e\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b <a href=\"https:\/\/habr.com\/ru\/post\/228031\/\" rel=\"noopener noreferrer nofollow\">variadic templates<\/a> \u0438 \u0438\u0445 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0430 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 <code>ScriptValue<\/code>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/c844df77f79cd176add2d41936d3e2ab901a7aa3\/Framework\/Sources\/o2\/Scripts\/ScriptValueDef.h#L230\" rel=\"noopener noreferrer nofollow\">PackArgs<\/a> \u0441 \u043c\u0430\u0433\u0438\u0435\u0439 \u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e variadic templates.<\/p>\n<details class=\"spoiler\">\n<summary>PackArgs<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">template&lt;typename ... _args> static void PackArgs(Vector&lt;ScriptValue>&amp; argsValues, _args ... args) { ([&amp;](auto&amp; arg) { argsValues.Add(ScriptValue(arg)); } (args), ...); }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0438\u043c\u0435\u0435\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u044b\u0437\u043e\u0432 <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/c844df77f79cd176add2d41936d3e2ab901a7aa3\/Framework\/Sources\/o2\/Scripts\/ScriptValueDef.h#L218\" rel=\"noopener noreferrer nofollow\">Invoke<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0430\u043c \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0441\u0442 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442.<\/p>\n<pre><code class=\"cpp\">template&lt;typename _res_type, typename ... _args> _res_type Invoke(_args ... args) const;<\/code><\/pre>\n<h4>\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0421++ \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0432 JS<\/h4>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u043a-\u0442\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440. \u041f\u043e\u043c\u043d\u0438\u0442\u0435 \u0432\u044b\u0448\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u043b \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u044b \u0432 JS? \u0412\u043e\u0442 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u0441\u0435 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432.<\/p>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 this, \u043f\u043e\u0434\u0441\u043e\u0432\u044b\u0432\u0430\u044f \u0442\u0443\u0434\u0430 \u0441\u0432\u0435\u0436\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u044f \u043f\u043e\u043b\u044f\u043c\u0438 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0430\u043f\u043f\u044f\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u0442 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442.<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/c844df77f79cd176add2d41936d3e2ab901a7aa3\/Framework\/Sources\/o2\/Scripts\/JerryScript\/ScriptValueImpl.h#L418\" rel=\"noopener noreferrer nofollow\">\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0443\u0442<\/a>. \u0412 \u043d\u0435\u0439 \u043c\u044b \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u0443\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0434\u0433\u0435\u043d\u0430 \u043f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u043f\u043e\u043b\u044f\u0445 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432\u044b\u0448\u0435\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435 API <code>ScriptValue<\/code><\/p>\n<details class=\"spoiler\">\n<summary>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0430<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">template&lt;typename _object_type, typename ... _args> void ScriptConstructorTypeProcessor::FunctionProcessor::Constructor(_object_type* object, Type* type) { ScriptValue thisFunc; thisFunc.SetThisFunction&lt;void, _args ...>(Function&lt;void(ScriptValue thisValue, _args ...)>( [](ScriptValue thisValue, _args ... args) { _object_type* sample = mnew _object_type(args ...); thisValue.SetContainingObject(sample, true);  if constexpr (std::is_base_of&lt;IObject, _object_type>::value &amp;&amp; !std::is_same&lt;IObject, _object_type>::value) { ReflectScriptValueTypeProcessor processor(thisValue); _object_type::template ProcessType&lt;ReflectScriptValueTypeProcessor>(sample, processor); } }));  ScriptConstructorTypeProcessor::RegisterTypeConstructor(type, thisFunc); }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041d\u0435 \u0431\u0443\u0434\u0443 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0432 \u043a\u043e\u0434\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e, \u0442.\u043a. \u0441\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u0430 \u0447\u0430\u0441\u0442\u044c \u0443 \u043c\u0435\u043d\u044f \u043f\u0435\u0440\u0435\u0443\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u0430. \u0412\u043a\u0440\u0430\u0442\u0446\u0435 \u0443 \u043c\u0435\u043d\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0443 \u0432\u0441\u0435\u0445 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043a\u043b\u0430\u0441\u0441-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440. \u0415\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0434\u043b\u044f \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0430 \u0435\u0441\u0442\u044c \u0434\u043b\u044f \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 <code>ScriptValue<\/code> \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043a\u043b\u0430\u0441\u0441. \u041e\u043d \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 ScriptValue \u043f\u043e\u043b\u044f\u043c\u0438 \u0438\u0437 \u043a\u043b\u0430\u0441\u0441\u0430 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438. \u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043c\u0438, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>@SCRIPTABLE<\/code>.<\/p>\n<h3>\u041a\u0430\u043a \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u043a\u0438<\/h3>\n<p>\u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0433\u0440\u0430\u0444 \u0441\u0446\u0435\u043d\u044b, \u043b\u043e\u0433\u0438\u043a\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0432 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u0445. \u0414\u043b\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/master\/Framework\/Sources\/o2\/Scene\/Components\/ScriptableComponent.h\" rel=\"noopener noreferrer nofollow\">ScriptableComponent<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u043f\u0443\u0442\u044c \u0434\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0438 <code>ScriptValue<\/code>-\u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u043a\u043b\u0430\u0441\u0441\u0430 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430. \u0412 \u043d\u0435\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u044f\u043a\u0438\u0435 <code>OnStart<\/code>, <code>Update<\/code>, <code>OnEnabled\/Disabled<\/code> \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 <code>ScriptValue<\/code>. \u0421\u0430\u043c \u0438\u043d\u0441\u0442\u0430\u043d\u0441 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d \u043a\u0430\u043a <code>serializable<\/code>. \u0414\u043b\u044f \u043d\u0435\u0433\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/c844df77f79cd176add2d41936d3e2ab901a7aa3\/Framework\/Sources\/o2\/Scripts\/JerryScript\/ScriptValueImpl.h#L447\" rel=\"noopener noreferrer nofollow\">\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u043e\u0440<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0441\u0435 property \u0438 \u043f\u0438\u0448\u0435\u0442 \u0432 <code>DataValue<\/code> (\u043e\u0431\u0435\u0440\u0442\u043a\u0430 \u043d\u0430\u0434 json).<\/p>\n<h3>\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440<\/h3>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/489\/300\/8d2\/4893008d236f7dd1b0fbfa231311e22a.png\" alt=\"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 Scriptable Component\" title=\"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 Scriptable Component\" width=\"505\" height=\"577\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/489\/300\/8d2\/4893008d236f7dd1b0fbfa231311e22a.png\"\/><figcaption>\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 Scriptable Component<\/figcaption><\/figure>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/master\/Editor\/Sources\/o2Editor\/Core\/Properties\/Basic\/ScriptValueProperty.h\" rel=\"noopener noreferrer nofollow\">ScriptValueProperty<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 <code>ScriptValue<\/code> \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0435\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 <code>ScriptValue<\/code> \u043a\u0430\u043a \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u044f \u0438\u0437 \u043d\u0435\u0433\u043e. \u041d\u043e \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0438\u043c \u0438 \u043a\u0430\u043a \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0438\u0437 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"javascript\">test = class test {     constructor() {         this.a = 5;         this.b = 'bla bla bla';         this.c = false;         this.d = { a: 5, b: false, c: 'stroka' };         this.e = new Vec2(3, 50);         this.f = new Rect(0, 1, 2, 3);         this.g = new Border(0, 1, 2, 3);         this.h = new Color4(255, 255, 255, 127);         this.ref = new o2.RefAnimationAsset('xxx.anim');         this.ref2= new o2.RefActorAsset();         this.sprite = new o2.Sprite();         this.actorRef = new o2.RefActor();         this.bodyRef = new o2.RefRigidBody();         this.curve = new o2.Curve();         this.obj = new o2.EditorTestComponent.TestInside();         this.array = [ 1, 2, 3, 4, 5 ];     }      OnStart() {         if (this.actorRef.IsValid()) {             this.actorRef.Get().transform.position = new Vec2(10, 20);         }     }      Update(dt) {         this.a += dt;         this.e = new Vec2(Math.sin(this.a), Math.cos(this.a));          if (this.actorRef.IsValid()) {             this.actorRef.Get().transform.size = this.e;         }     } }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>P.S. \u041c\u043e\u044e \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043d\u0438 \u0432 \u043a\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439. \u042d\u0442\u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f, \u043d\u0435 \u043e\u0431\u043a\u0430\u0442\u0430\u043d\u043d\u0430\u044f. \u041e\u043d\u0430 \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u0442 \u043d\u0430 \u0438\u0434\u0435\u0430\u043b \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043d\u043e \u044f \u0431\u044b \u0441 \u0440\u0430\u0434\u043e\u0441\u0442\u044c\u044e \u0443\u0437\u043d\u0430\u043b \u043c\u043d\u0435\u043d\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0445.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/673904\/\"> https:\/\/habr.com\/ru\/post\/673904\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0421++ \u0438\u0433\u0440\u044b \u0434\u043e\u043b\u0433\u043e \u0438 \u0434\u043e\u0440\u043e\u0433\u043e, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e \u043f\u0435\u0440\u0444\u043e\u043c\u0430\u043d\u0441\u0443 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0445\u043e\u0440\u043e\u0448\u043e. \u041d\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0451 \u0432 \u0438\u0433\u0440\u0430\u0445, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e 2D. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u0441\u044f\u043a\u0438\u0435 \u043e\u043a\u043e\u0448\u0435\u0447\u043a\u0438 \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442 \u0442\u044f\u0436\u0435\u043b\u044b\u0445 \u0440\u0430\u0441\u0447\u0435\u0442\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u0438. \u0410 \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u043e 80% \u0432\u0441\u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043c\u0430 \u043a\u043e\u0434\u0430. \u0418 \u043d\u0430 \u0421++ \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0430 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435 &#8212; \u0435\u0441\u043b\u0438 \u0433\u0434\u0435-\u0442\u043e \u043a\u0440\u0435\u0448\u0438\u0442\u0441\u044f \u0438\u043b\u0438 \u0431\u0430\u0436\u0438\u0442, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. <\/p>\n<p>\u0421\u043a\u0440\u0438\u043f\u0442\u044b &#8212; \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0431\u0435\u0434. \u0418 \u043a\u043e\u0434 \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0449\u0435, \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u0434\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 (\u0434\u0430-\u0434\u0430, \u0441\u0442\u043e\u0440\u044b \u044f\u0432\u043d\u043e \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u044e\u0442 \u044d\u0442\u043e, \u043d\u043e \u043d\u0430 \u0434\u0435\u043b\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u0434\u0435\u043b\u0430\u044e\u0442).<\/p>\n<h2>\u041f\u043e\u0447\u0435\u043c\u0443 JS?<\/h2>\n<p>\u0412 \u043c\u0438\u0440\u0435 \u043f\u043e\u043b\u043d\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 &#8212; LUA, LUAu, Squirrel, AngleScript \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u041e\u0431\u044b\u0447\u043d\u043e \u0432 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0434\u0432\u0438\u0436\u043a\u0438 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442 LUA. \u041e\u043d \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439, \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439. \u041d\u043e \u043d\u0430 \u043d\u0435\u043c \u043a\u0430\u0442\u0430\u0441\u0442\u0440\u043e\u0444\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0430\u043b\u043e \u043f\u0438\u0448\u0443\u0442 \u043b\u044e\u0434\u0435\u0439. \u0414\u0430, \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0438\u0437\u0443\u0447\u0438\u0442\u044c. \u041d\u043e \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0438 \u0443\u0436\u0435 \u0437\u043d\u0430\u0442\u044c &#8212; \u0434\u0432\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0440\u0430\u0437\u043d\u0438\u0446\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0438\u0441\u043a\u0430\u043b \u0447\u0442\u043e-\u0442\u043e \u0443\u0436\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u043e\u0435, \u043d\u043e \u0432 \u0442\u043e\u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u042f \u0441\u043c\u043e\u0442\u0440\u0435\u043b \u043d\u0430 \u0434\u0432\u0430 \u044f\u0437\u044b\u043a\u0430 &#8212; JS \u0438 C#. \u0420\u0430\u043d\u0442\u0430\u0439\u043c\u044b \u0434\u043b\u044f \u043e\u0431\u043e\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0442\u044f\u0436\u0435\u043b\u044b\u0435. \u0414\u043b\u044f JS \u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0441\u0430\u043c\u044b\u043c \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440 google V8, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b \u043c\u0438\u043d\u0438\u043c\u0443\u043c 6mb \u0431\u0438\u043d\u0430\u0440\u044f, \u0447\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043c\u043d\u043e\u0433\u043e \u0432 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u043c \u0433\u0435\u0439\u043c\u0434\u0435\u0432\u0435. C# \u0432\u0440\u043e\u0434\u0435 \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f, mono \u0441\u0442\u0430\u043b \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0438 \u0442\u043e\u0436\u0435 \u0431\u044b\u043b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u043c. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0447\u0442\u043e \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0446\u0435\u043b\u0430\u044f \u0430\u0440\u043c\u0438\u044f Unity-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043f\u043b\u043e\u0442\u043d\u043e \u043f\u043e\u0434\u0441\u0435\u0432\u0448\u0438\u0445 \u043d\u0430 C#. \u041d\u043e \u0435\u0433\u043e \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u0442\u043e\u0436\u0435 \u0431\u044b\u043b \u0442\u044f\u0436\u0435\u043b\u044b\u043c \u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u043c \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0418\u0437 \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445 \u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u043a\u043b\u043e\u043d\u044f\u043b\u0441\u044f \u043a JS \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c:<\/p>\n<ul>\n<li>\n<p>\u044d\u0442\u043e \u044f\u0437\u044b\u043a \u043d\u0435 \u043a\u0430\u043a \u0432 Unity;<\/p>\n<\/li>\n<li>\n<p>web-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435, \u0438 \u043e\u043d\u0438 \u0442\u043e\u0436\u0435 \u0445\u043e\u0442\u044f\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0433\u0440\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 JS \u043d\u0435 \u0441\u0442\u0440\u043e\u0433\u043e \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439, \u043d\u043e \u0435\u0441\u0442\u044c TypeScript, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 JS, \u0438 \u043e\u043d \u0443\u0436\u0435 \u0441\u0442\u0440\u043e\u0433\u043e \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432\u043d\u0435\u0434\u0440\u0438\u0432 JS, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0449\u0435 \u0438 TypeScript.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0442\u043e\u043c \u043a\u0430\u043a-\u0442\u043e \u043f\u043e\u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043b \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435, \u0442\u043e\u0436\u0435 \u0438\u0437 \u0441\u0442\u0443\u0434\u0438\u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0438\u0433\u0440. \u0418 \u043e\u043d \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u0443\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442 \u043f\u0438\u0448\u0443\u0442 \u043d\u0430 JS \u043d\u0430 \u043f\u043b\u044e\u0441\u043e\u0432\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0435. \u041c\u043d\u0435, \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0441\u0432\u043e\u0435\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430 \u0441\u0442\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0447\u0442\u043e \u0434\u0430 \u043a\u0430\u043a.<\/p>\n<p>\u041e\u043d \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u0447\u0442\u043e \u0443 \u043d\u0438\u0445 \u0434\u0432\u0438\u0436\u043e\u043a, \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 Cocos2D, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0421++, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u0442\u0440\u043e\u0435\u043d JS-\u0434\u0432\u0438\u0436\u043e\u043a <a href=\"https:\/\/jerryscript.net\/\" rel=\"noopener noreferrer nofollow\">JerryScript<\/a>. \u0411\u0430\u043c! \u041e \u0442\u0430\u043a\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0435 \u044f \u043d\u0435 \u0437\u043d\u0430\u043b. \u041e\u043d \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439, \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0418\u0437 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u044f \u0432\u0438\u0434\u0435\u043b \u0442\u043e\u043b\u044c\u043a\u043e <a href=\"https:\/\/bellard.org\/quickjs\/\" rel=\"noopener noreferrer nofollow\">QuickJS<\/a>, \u043d\u043e \u0443 \u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f. \u0418 \u044f \u0441\u0442\u0430\u043b \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435. \u0412\u0441\u0435 \u0436\u0435 \u0435\u0441\u043b\u0438 \u0446\u0435\u043b\u0430\u044f \u043a\u043e\u043d\u0442\u043e\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0435\u0433\u043e \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435, \u044d\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u0434\u0430 \u0437\u043d\u0430\u0447\u0438\u0442.<\/p>\n<p>\u042f \u0431\u0435\u0433\u043b\u043e \u0438\u0437\u0443\u0447\u0438\u043b API \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0441\u043e\u0431\u0440\u0430\u043b \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0432\u0441\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0441 \u043f\u043e\u043b \u043f\u0438\u043d\u043a\u0430. \u042d\u0442\u043e \u043a\u0440\u0443\u0442\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c V8 \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0434\u043e\u043b\u0433\u043e.<\/p>\n<h2>\u041a\u0430\u043a \u0432\u0441\u0435 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e<\/h2>\n<p>\u0418\u0442\u0430\u043a, \u044f \u0432\u044b\u0434\u0435\u043b\u0438\u043b 2 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0432\u0435\u0449\u0438 \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0438\u043d\u0433\u0430: \u044d\u0442\u043e \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430 \u0438 \u043a\u043b\u0430\u0441\u0441-\u043e\u0431\u0435\u0440\u0442\u043a\u0430 \u043d\u0430\u0434 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p><a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/8351008e36bbdc6243a49e23b6fb96a627002138\/Framework\/Sources\/o2\/Scripts\/ScriptEngine.h#L41\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430<\/a> \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f: \u043e\u043d\u0430 \u0443\u043c\u0435\u0435\u0442 \u043f\u0430\u0440\u0441\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441, \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0447\u0438\u0441\u0442\u043a\u0443 \u043c\u0443\u0441\u043e\u0440\u0430 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a.<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u043e\u0434\u0438\u043d \u0438\u0437 \u043f\u043b\u044e\u0441\u043e\u0432 jerry \u0435\u0449\u0435 \u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=Samsung.iotjs-vscode-extension\" rel=\"noopener noreferrer nofollow\">\u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f VS Code<\/a>, \u0438 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043d\u0435\u043a\u0442 \u0438\u0437 \u043a\u043e\u0434\u0430. \u0412\u0430\u0443\u043b\u044f, \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u043f\u0440\u0438\u0446\u0435\u043f\u0438\u043b\u0441\u044f, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0442\u043e \u0438 \u043a\u0430\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043c\u0438\u043d\u0443\u0441 &#8212; \u043e\u043d \u043f\u043b\u043e\u0445\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0422\u043e\u0447\u043d\u0435\u0435, \u043e\u043d \u0438\u0445 \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043f\u0438\u0448\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e [object] \u0438 \u0432\u0441\u0435. \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0430\u0432\u0442\u043e\u0440\u044b jerry \u0437\u0434\u0435\u0441\u044c \u043a\u0430\u043a-\u0442\u043e \u043f\u043e\u043b\u0435\u043d\u0438\u043b\u0438\u0441\u044c \u0438 \u043d\u0435 \u0434\u043e\u0432\u0435\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0434\u043e \u043a\u043e\u043d\u0446\u0430. \u0427\u0442\u043e \u0436, \u043d\u0435 \u0441\u0442\u0440\u0430\u0448\u043d\u043e, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u0430\u043c\u0438!<\/p>\n<h3>ScriptValue \u0432\u0441\u0435\u043c\u0443 \u0433\u043e\u043b\u043e\u0432\u0430!<\/h3>\n<p>\u0423 jerry \u0434\u043b\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>jerry_value_t<\/code>. \u0422\u0430\u043a \u043a\u0430\u043a \u0432\u0441\u0435 API C-\u0448\u043d\u043e\u0435, \u0442\u043e \u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0435\u0442. \u0415\u0441\u0442\u044c \u043a\u0443\u0447\u0430 C-\u0448\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 C-\u0448\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u044f \u043e\u0431\u0435\u0440\u043d\u0443\u043b \u0432 \u0441\u0432\u043e\u0439 \u043a\u043b\u0430\u0441\u0441, <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/8351008e36bbdc6243a49e23b6fb96a627002138\/Framework\/Sources\/o2\/Scripts\/ScriptValueDef.h#L17\" rel=\"noopener noreferrer nofollow\">ScriptValue<\/a>.<\/p>\n<p>\u041a\u0430\u0436\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043b\u0430\u0441\u0441, \u043d\u043e \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u0435:<\/p>\n<ul>\n<li>\n<p>\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0443\u044e \u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043a\u043b\u0430\u0441\u0441\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0421++ \u043e\u0431\u044a\u0435\u043a\u0442;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0447\u0442\u043e \u0437\u0430 \u0442\u0438\u043f \u0442\u0430\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0443\u043c\u0435\u0442\u044c \u043a\u0430\u0441\u0442\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432 \u043d\u0443\u0436\u043d\u044b\u0439 \u0442\u0438\u043f;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0447\u0442\u043e \u0437\u0430 \u0442\u0438\u043f \u0421++ \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u043d\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u043e\u043b\u044f\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432: \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c, \u0443\u0434\u0430\u043b\u044f\u0442\u044c, \u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043a\u0430\u043a \u0441 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u0413\u0434\u0435-\u0442\u043e \u0442\u0430\u043c \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0437\u0430 \u0441\u0435\u0440\u0434\u0446\u0435 \u043e\u0434\u0438\u043d \u0438\u0437 \u0430\u0434\u0435\u043f\u0442\u043e\u0432 SOLID&#8230; \u041d\u043e \u044d\u0442\u043e API \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u0432\u0441\u0435 \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0443\u043c\u0435\u0442\u044c. \u0412\u0435\u0434\u044c \u0432 JS \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e. \u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441 \u0442\u0435\u043c \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0432 JS.<\/p>\n<p>\u0412 \u043d\u0435\u0439 \u043c\u043e\u0436\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0439 \u0442\u0438\u043f (int, number, string, bigInt), \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u043b\u0438 \u043c\u0430\u0441\u0441\u0438\u0432. \u041f\u043e \u0441\u0443\u0442\u0438 \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043c\u0438\u043c\u0438\u043a\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f. \u0412 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0442\u0438\u043f\u0430, \u0438 \u043e\u043d\u0430 \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0439 \u0442\u0438\u043f.<\/p>\n<h3>\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/h3>\n<p>ScriptValue \u0445\u0440\u0430\u043d\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 <code>jerry_value_t<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u0441\u0443\u0442\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u0438\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 jerry. \u0412\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u044d\u0442\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>\u0415\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c. \u0418\u043d\u0430\u0447\u0435 &#8212; \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435. Jerry \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0441\u044b\u043b\u043e\u043a, \u0438 \u0441\u043a\u0430\u0436\u0435\u0442 \u0442\u0435\u0431\u0435 \u0447\u0442\u043e \u0442\u044b \u0437\u0430\u0431\u044b\u043b \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0433\u043e-\u0442\u043e. \u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>jerry_create_undefined<\/code> \u0438\u043b\u0438 <code>jerry_create_object<\/code>. \u041f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c, \u0432\u044b\u0437\u0432\u0430\u0432 <code>jerry_release_value<\/code>.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (\u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0442\u0438\u043f\u044b \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f, \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430) \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>jerry_acquire_value<\/code>.<\/p>\n<p>\u041e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u044d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0433\u0434\u0435 \u043d\u0443\u0436\u043d\u043e \u0438 \u0443\u0436\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0431\u043e\u0442\u0438\u0442\u0441\u044f \u043e\u0431 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u0438 <code>jerry_value_t<\/code>.<\/p>\n<h3>\u041f\u0440\u043e\u0441\u0442\u044b\u0435 \u0442\u0438\u043f\u044b<\/h3>\n<p>\u0414\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0441\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u0447\u0442\u043e \u0438 \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0433\u043e <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/master\/Framework\/Sources\/o2\/Utils\/Serialization\/DataValue.h\" rel=\"noopener noreferrer nofollow\">DataValue<\/a>.<\/p>\n<p>\u0412 \u0441\u0430\u043c\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/8351008e36bbdc6243a49e23b6fb96a627002138\/Framework\/Sources\/o2\/Scripts\/ScriptValueDef.h#L65\" rel=\"noopener noreferrer nofollow\">operator T<\/a> \u0438 <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/8351008e36bbdc6243a49e23b6fb96a627002138\/Framework\/Sources\/o2\/Scripts\/ScriptValueDef.h#L65\" rel=\"noopener noreferrer nofollow\">operator=(T)<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f \u043b\u044e\u0431\u043e\u0439 \u0442\u0438\u043f. \u0412\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0430 <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/8351008e36bbdc6243a49e23b6fb96a627002138\/Framework\/Sources\/o2\/Scripts\/ScriptValueDef.h#L24\" rel=\"noopener noreferrer nofollow\">Converter<\/a>. \u0414\u0430\u043b\u0435\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 <code>T<\/code> \u043f\u0438\u0448\u0443\u0442\u0441\u044f <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/8351008e36bbdc6243a49e23b6fb96a627002138\/Framework\/Sources\/o2\/Scripts\/JerryScript\/ScriptValueConverters.h#L86\" rel=\"noopener noreferrer nofollow\">\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 Converter<\/a> \u0441\u043e \u0432\u0441\u044f\u043a\u0438\u043c\u0438 SFINAE-\u0448\u0442\u0443\u043a\u043e\u0432\u0438\u043d\u0430\u043c\u0438.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">template&lt;typename _type, typename _enable = void> struct Converter { static constexpr bool isSupported = true; using __type = typename std::conditional&lt;std::is_same&lt;void, _type>::value, int, _type>::type;  static void Write(const __type&amp; value, ScriptValue&amp; data); static void Read(__type&amp; value, const ScriptValue&amp; data); };    template&lt;typename _key, typename _value> struct Converter&lt;Map&lt;_key, _value>> { static constexpr bool isSupported = true;  static void Write(const Map&lt;_key, _value>&amp; value, ScriptValue&amp; data) { data.jvalue = jerry_create_object();  for (auto&amp; kv : value) data.SetProperty(ScriptValue(kv.first), ScriptValue(kv.second)); }  static void Read(Map&lt;_key, _value>&amp; value, const ScriptValue&amp; data) { if (data.GetValueType() == ValueType::Object) { value.Clear(); data.ForEachProperties([&amp;](const ScriptValue&amp; name, const ScriptValue&amp; value) { value[name.GetValue&lt;_key>()] = name.GetValue&lt;_value>(); }); } } };<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043f\u0440\u0438 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0421 \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 API jerry. \u0421\u043e \u0432\u0441\u0435\u043c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0443\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435.<\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0442\u0430\u043a\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u043a\u0430\u043a <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/master\/Framework\/Sources\/o2\/Utils\/Math\/Vector2.h\" rel=\"noopener noreferrer nofollow\">Vec2 <\/a>\u0438\u043b\u0438 <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/master\/Framework\/Sources\/o2\/Utils\/Math\/Rect.h\" rel=\"noopener noreferrer nofollow\">Rect<\/a>. \u0423 \u043d\u0438\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u043e\u043b\u044f \u0442\u0438\u043f\u0430 <code>x, y<\/code>; \u0438 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u041d\u0443\u0436\u043d\u043e \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u0438 \u0436\u0435 \u043f\u043e\u043b\u044f \u0431\u044b\u043b\u0438 \u0438 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435, \u0438 \u0431\u044b\u043b \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b.<\/p>\n<p>\u041f\u0440\u043e\u043a\u0438\u0434\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0432 JS \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u0442.\u043a. \u044d\u0442\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u043e\u0432\u0435\u0440\u0445\u0435\u0434. \u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u043c\u0435\u0436\u0434\u0443 JS \u0438 C++ \u043d\u0443\u0436\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0435 \u0441\u0442\u044b\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u043d\u0443\u0442\u0440\u0438 JS \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u0435\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0435\u043c \u0441 \u0431\u0438\u043d\u0434\u0438\u043d\u0433\u0430\u043c\u0438 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0410 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0443\u0436\u0435 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0438\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\/\u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u0430.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0438\u0448\u0435\u043c <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/master\/Framework\/Assets\/Scripts\/Math.js\" rel=\"noopener noreferrer nofollow\">JS-\u043a\u043b\u0430\u0441\u0441\u044b \u044d\u0442\u0438\u0445 \u0442\u0438\u043f\u043e\u0432<\/a>, \u0447\u0442\u043e\u0431\u044b \u0443\u043c\u0435\u0442\u044c \u0441 \u043d\u0438\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0438\u0445 \u043a\u0430\u043a-\u0442\u043e \u0437\u0430\u043c\u0430\u043f\u0438\u0442\u044c \u043d\u0430 \u0421++ \u043e\u0431\u044a\u0435\u043a\u0442\u044b. \u0417\u0434\u0435\u0441\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u0438 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0441 \u0432 JS \u0438 \u043a\u0430\u043a \u043e\u043d \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0432\u043d\u0443\u0442\u0440\u0438.<\/p>\n<h3>\u041a\u043b\u0430\u0441\u0441\u044b \u0432 JS<\/h3>\n<p>\u041a\u043b\u0430\u0441\u0441\u044b \u0432 JS &#8212; \u044d\u0442\u043e \u0447\u0438\u0441\u0442\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0430\u0445\u0430\u0440. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0438\u0445 \u043d\u0435\u0442. \u041e\u0431\u044a\u0435\u043a\u0442\u044b \u043a\u043b\u0430\u0441\u0441\u043e\u0432 &#8212; \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441 \u043f\u043e\u043b\u044f\u043c\u0438 \u0432\u043d\u0443\u0442\u0440\u0438, \u043d\u043e \u0441 \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 \u043d\u0435\u043a\u0438\u0439 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f. \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u043e\u0434\u0438\u043d \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430. \u0410 \u0441\u0430\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u044b &#8212; \u044d\u0442\u043e \u0434\u0430\u0436\u0435 \u043d\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 constructor \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0421\u0430\u043c\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 &#8212; \u044d\u0442\u043e \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0430\u043a\u0443\u044e constructor-\u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"javascript\">class MyClass  {    constructor() { this.abc = \"abc\" }    myFunction() { print(this.abc) }  }<\/code><\/pre>\n<p>\u041e\u043d \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0435\u0431\u044f \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043a\u043e\u0435:<\/p>\n<pre><code class=\"javascript\">MyClass = (function() {    function MyClass() { this.abc = \"abc\" }    MyClass.prototype.myFunction = function() { print(this.abc) }      return MyClass;  }) ();<\/code><\/pre>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0445\u0438\u0442\u0440\u043e, \u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f. \u041c\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0435\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c. \u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u043f\u0440\u044f\u0442\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0441\u0435\u0445. \u0422\u0430\u043a\u043e\u0439 \u0432\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0441\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u043e\u0442 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0441\u0442\u0438. \u0412\u043d\u0443\u0442\u0440\u0438 \u043c\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u043c, \u0442.\u043a. \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 this. \u0414\u0430\u043b\u0435\u0435 \u043a \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0443 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u043c \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432 \u043a\u043b\u0430\u0441\u0441\u0430) \u043f\u0440\u0438\u0446\u0435\u043f\u043b\u044f\u0435\u043c \u043d\u0430\u0448\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u0418 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0432 \u043d\u0430\u0448\u0435\u0439 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u044d\u0442\u0443 \u0445\u0438\u0442\u0440\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440.<\/p>\n<p>\u0412 \u0441\u0430\u043c\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u0435\u0441\u0442\u044c \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <code>new<\/code>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430\u043c\u0438, \u0434\u0435\u043b\u0430\u044f \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n<p>\u0421\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0435, \u0437\u0430\u0447\u0435\u043c, \u0447\u0435\u0440\u0442 \u0442\u0435\u0431\u044f \u0434\u0435\u0440\u0438, \u043d\u0430\u043c \u044d\u0442\u043e? \u041d\u043e \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u043e\u043a\u0438\u043d\u0443\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u044b \u0432 JS \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442.<\/p>\n<h3>JS \u043a\u043b\u0430\u0441\u0441 \u0432 \u0421++ \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442<\/h3>\n<p>\u0412\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043a \u0442\u0435\u043c\u0435 \u043f\u0440\u043e\u0431\u0440\u043e\u0441\u0430 <code>Vec2<\/code> \u0438 <code>Rect<\/code> \u0432 JS \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 C++ \u0432 JS, \u0442\u043e \u0432 JS \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043b\u0430\u0441\u0441 <code>Vec2<\/code>, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0432 JS. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u0443\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0443\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u043e\u043b\u044f (x \u0438 y, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440) \u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043a\u0430\u043a \u0438 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u043a\u043b\u0430\u0441\u0441\u0430 <code>Vec2<\/code>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0438\u0437 JS, \u0447\u0442\u043e \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0441\u0442\u044b\u043b\u044c\u043d\u043e (\u043d\u0435 \u043d\u0430\u0448\u0435\u043b \u043d\u0443\u0436\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 API): <code>o2Scripts.Eval(\"Vec2.prototype\")<\/code>. \u0417\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0435\u0433\u043e \u0432 <code>ScriptValue<\/code> \u0447\u0435\u0440\u0435\u0437 <code>jerry_set_prototype<\/code>. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u044b \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/master\/Framework\/Sources\/o2\/Utils\/Math\/Vertex2.h\" rel=\"noopener noreferrer nofollow\">Vec2 <\/a>\u0438\u0437 \u0421++ \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c <a href=\"https:\/\/github.com\/zenkovich\/o2\/blob\/c844df77f79cd176add2d41936d3e2ab901a7aa3\/Framework\/Assets\/Scripts\/Math.js#L1\" rel=\"noopener noreferrer nofollow\">Vec2 <\/a>\u0443\u0436\u0435 \u0432 JS, \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>\u0418\u0437 JS \u0432 C++ \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e, \u043c\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u043c \u0442\u0438\u043f \u0438\u0437 \u043f\u043b\u044e\u0441\u043e\u0432 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0435\u043c \u043f\u043e\u043b\u044f \u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (<code>x, y<\/code>):<\/p>\n<pre><code class=\"cpp\">template&lt;> struct Converter&lt;Vec2F> { static constexpr bool isSupported = true;  static void Write(const Vec2F&amp; value, ScriptValue&amp; data) { data.jvalue = jerry_create_object(); data.SetPrototype(*ScriptValuePrototypes::GetVec2Prototype()); data.SetProperty(\"x\", ScriptValue(value.x)); data.SetProperty(\"y\", ScriptValue(value.y)); }  static void Read(Vec2F&amp; value, const ScriptValue&amp; data) { value.x = data.GetProperty(\"x\"); value.y = data.GetProperty(\"y\"); } };<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0421++ \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-335102","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/335102","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=335102"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/335102\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=335102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=335102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=335102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}