{"id":33549,"date":"2013-07-09T09:30:00","date_gmt":"2013-07-09T06:30:00","guid":{"rendered":"https:\/\/fatihboy.com\/?p=33549"},"modified":"2021-06-18T12:13:24","modified_gmt":"2021-06-18T09:13:24","slug":"jsrt-javascript-calisma-zamani-barindirma","status":"publish","type":"post","link":"https:\/\/fatihboy.com\/en\/jsrt-javascript-calisma-zamani-barindirma\/","title":{"rendered":"JsRT; JavaScript \u00c7al\u0131\u015fma-Zaman\u0131 Bar\u0131nd\u0131rma"},"content":{"rendered":"<p>&nbsp;&nbsp; Hat\u0131rlayacak olursan\u0131z ge\u00e7ti\u011fimiz hafta kaleme ald\u0131\u011f\u0131m <a href=\"\/en\/?p=12017\">makalemde<\/a> sizlere <strong>JsRT<\/strong> (<strong>JavaScript RunTime<\/strong>)\u2019dan bahsetmi\u015ftim. \/\/Build\/ konferans\u0131n\u0131n b\u00fcy\u00fck duyurular\u0131 aras\u0131nda g\u00f6zden ka\u00e7an JsRT duyurusu, Internet Explorer 9 ile birlikte tan\u0131d\u0131\u011f\u0131m\u0131z <strong>Chakra<\/strong> javascript motorunun biz yaz\u0131l\u0131m geli\u015ftiriciler taraf\u0131ndan da kullan\u0131labilecek olmas\u0131 nedeniyle \u00f6nemliydi.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Makaleyi kaleme ald\u0131\u011f\u0131m s\u0131rada bu duyuru o kadar yeniydi ki; hen\u00fcz ortada ne dok\u00fcmantasyon ne de \u00f6rnek kod bulunuyordu. Ge\u00e7ti\u011fimiz bir ka\u00e7 g\u00fcn i\u00e7erisinde \u00f6ncelikle k\u0131sa bir <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dn249673(v=vs.94).aspx\" target=\"_blank\" rel=\"noopener noreferrer\">dok\u00fcmantasyon<\/a>, sonras\u0131nda da <a href=\"http:\/\/code.msdn.microsoft.com\/JavaScript-Runtime-Hosting-d3a13880\" target=\"_blank\" rel=\"noopener noreferrer\">\u00f6rnek kod<\/a> yaz\u0131l\u0131mc\u0131larla payla\u015f\u0131ld\u0131. Bu makalemde sizlere JsRT API\u2019si yard\u0131m\u0131yla C# i\u00e7erisinde javascript \u00e7al\u0131\u015fma-zaman\u0131n\u0131 nas\u0131l bar\u0131nd\u0131rabilece\u011finizi payla\u015faca\u011f\u0131m.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Koda elimizi bula\u015ft\u0131rmadan \u00f6nce temel JsRT konseptlerinden bahsetmek faydal\u0131 olacakt\u0131r. Her \u015feyden \u00f6nce JsRT API\u2019sinin Internet Explorer 11 \u00f6n izlemesi ile birlikte hayat\u0131m\u0131za girdi\u011fini belirtmeliyim. JsRT API\u2019si asl\u0131nda, <em>Internet Explorer 9\u2019dan beri kullan\u0131mda olan<\/em>, Chakra javascript motorunun kullan\u0131m\u0131m\u0131za sunulmas\u0131. Hal b\u00f6yle olunca Windows ve Internet Explorer ba\u011f\u0131ml\u0131. Bunun anlam\u0131 Microsoft\u2019un el-ayak \u00e7ekti\u011fi Windows XP ve \u00f6nceki s\u00fcr\u00fcmlerinde kullan\u0131m\u0131 s\u00f6z konusu de\u011fil. JsRT API\u2019sinin iki temel bile\u015feni bulunmakta; <strong>runtime<\/strong> (<em>\u00e7al\u0131\u015fma-zaman\u0131<\/em>) ve <strong>execution context<\/strong> (<em>y\u00fcr\u00fctme i\u00e7eri\u011fi<\/em>).<\/p>\n\n\n\n<p>&nbsp; <em>Runtime<\/em>; ad\u0131ndan da anla\u015f\u0131labilece\u011fi gibi javascript\u2019in \u00e7al\u0131\u015ft\u0131\u011f\u0131 ortamd\u0131r. Javascript\u2019in managed (y\u00f6netilen) bir dil olmas\u0131 nedeniyle do\u011fal olarak runtime; garbage collection, Just-in-Time (JIT) derleyici gibi bile\u015fenlerden olu\u015fmaktad\u0131r. Her bir runtime kendi i\u00e7erisinde ve ba\u011f\u0131ms\u0131z olarak bu bile\u015fenlere sahiptir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; <em>Execution context<\/em> ise runtime i\u00e7erisinde yer alan isole alanlard\u0131r ve kendi JavaScript global nesnesine sahiptirler.&nbsp; Bir runtime i\u00e7erisinde birden fazla execution context yer alabilir. Execution context\u2019in isole olmas\u0131 nedeniyle bir execution context\u2019te yer alan de\u011feler bir di\u011ferine ta\u015f\u0131namaz\/kullan\u0131lamaz.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Hat\u0131rlarsan\u0131z \u00f6nceki makalemde size JsRT i\u00e7in managed bir k\u00fct\u00fcphanenin hen\u00fcz olmad\u0131\u011f\u0131ndan bahsetmi\u015ftim. Dolay\u0131s\u0131yla da t\u00fcm i\u015fi P\/Invoke \u00e7a\u011fr\u0131lar\u0131 ile yapmam\u0131z gerekli. \u015eansl\u0131y\u0131z yay\u0131nlanan <a href=\"http:\/\/code.msdn.microsoft.com\/JavaScript-Runtime-Hosting-d3a13880\" target=\"_blank\" rel=\"noopener noreferrer\">ilk \u00f6rnek kod par\u00e7ac\u0131klar\u0131<\/a> C++\u2019\u0131n yan\u0131nda C# ve Visual Basic\u2019te de yay\u0131nland\u0131. Dolay\u0131s\u0131yla da P\/Invoke \u00e7a\u011fr\u0131lar\u0131yla do\u011frudan bo\u011fu\u015fmam\u0131za gerek yok. Payla\u015faca\u011f\u0131m \u00f6rnek uygulamada yay\u0131nlanan \u00f6rnek i\u00e7erisindeki bu kodlardan faydalanaca\u011f\u0131m.<\/p>\n\n\n\n<p>&nbsp;&nbsp; \u00d6ncelikle, Internet Explorer 11 \u00f6n izlemesinin kurulu oldu\u011fu bir sisteme ihtiyac\u0131m\u0131z var. Ben bu i\u015f i\u00e7in ge\u00e7ti\u011fimiz haftalarda incelemek ad\u0131na VMware \u00fczerine kurdu\u011fum Windows 8.1 \u00f6n izleme sanal makinesini kullanaca\u011f\u0131m. Ayn\u0131 sanal makine \u00fczerinde Visual Studio 2013 \u00f6n izlemesi de oldu\u011funu pe\u015finen belirteyim \ud83d\ude09<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; \u0130\u015fe bir konsol projesi olu\u015fturmakla ba\u015flayal\u0131m;<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-konsol-projesi.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-konsol-projesi_thumb.png\" alt=\"JsRT bar\u0131nd\u0131rmak i\u00e7in bir konsol projesi olu\u015fturuyoruz\" width=\"588\" height=\"418\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; Projemiz a\u00e7\u0131ld\u0131ktan sonra ilk i\u015f olarak Microsoft taraf\u0131ndan yay\u0131nlanan \u00f6rnek C# kodlar\u0131 i\u00e7erisinden hosting klas\u00f6r\u00fcn\u00fc komple projemize kopyalayal\u0131m;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-hosting-kodlari.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-hosting-kodlari_thumb.png\" alt=\"Microsoft taraf\u0131ndan verilen \u00f6rnek kodlardan Hosting klas\u00f6r\u00fcn\u00fc projemize kopyalayal\u0131m\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; Konsol uygulamam\u0131z \u00e7al\u0131\u015ft\u0131r\u0131lacak olan javascript dosyas\u0131n\u0131 parametre olarak alacak. Dolay\u0131s\u0131yla uygulama parametrelerini kontrolle ba\u015fl\u0131yoruz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">if (args == null || args.Length == 0) {\n    Console.Error.WriteLine(\"Kullan\u0131m :  JSHosting &lt;betik ad\u0131> &lt;parametreler>\");\n\n    return;\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; JsRT bar\u0131nd\u0131rmak i\u00e7in yaz\u0131m\u0131n ba\u015flar\u0131nda belirtti\u011fim iki temel bile\u015feni, runtime ve execution context, olu\u015fturmal\u0131y\u0131z;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using (var calismaZamani = JavaScriptRuntime.Create()) {\n    var context = calismaZamani.CreateContext();\n\n    \/\/di\u011fer JsRT kodlar\u0131\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Elimizde execution context\u2019imiz oldu\u011funa g\u00f6re art\u0131k parametre ile belirtilen javascript dosya i\u00e7eri\u011fi okuyarak \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 i\u00e7in context\u2019e verebiliriz. Bu i\u015flem i\u00e7in <strong>JavaScriptContext<\/strong> s\u0131n\u0131f\u0131 i\u00e7erisindeki statik <strong>RunScript<\/strong> fonksiyonunu kullanabiliriz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using (new JavaScriptContext.Scope(context)) {\n   var betikAdi = args[0];\n   var betik = File.ReadAllText(betikAdi);\n\n   var sonuc = JavaScriptContext.RunScript(betik, JavaScriptSourceContext.FromIntPtr(IntPtr.Zero), betikAdi);\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Yukar\u0131daki bloktan \u00e7\u0131k\u0131ld\u0131\u011f\u0131nda art\u0131k kodumuz \u00e7al\u0131\u015fm\u0131\u015f olacakt\u0131r. Kodun \u00e7al\u0131\u015fmas\u0131 s\u0131ras\u0131nda herhangi bir hata olu\u015fmas\u0131 durumunda runtime <strong>JavaScriptScriptException<\/strong> hatas\u0131 f\u0131rlatacakt\u0131r. Dolay\u0131s\u0131yla do\u011fru bir hata y\u00f6netimi i\u00e7in yukar\u0131daki kodumuza try-catch blo\u011funu ekleyip bu hatay\u0131 dinlemeliyiz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using (new JavaScriptContext.Scope(context)) {\n   var betikAdi = args[0];\n   var betik = File.ReadAllText(betikAdi);\n\n   JavaScriptValue sonuc;\n   try {\n       sonuc = JavaScriptContext.RunScript(betik, currentSourceContext++, betikAdi);\n   }\n   catch (JavaScriptScriptException e) {\n       var messageName = JavaScriptPropertyId.FromString(\"message\");\n       var messageValue = e.Error.GetProperty(messageName);\n       var message = messageValue.ToString();\n\n       Console.Error.WriteLine(\"JSHosting: Hata: {0}\", message);\n   }\n   catch (Exception e) {\n       Console.Error.WriteLine(\"JSHosting: Betik \u00e7al\u0131\u015ft\u0131r\u0131l\u0131rken hata olu\u015ftu: {0}\", e.Message);\n   }\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi hata mesaj\u0131 okuyabilmek i\u00e7in takip etmemiz gereken bir ka\u00e7 ad\u0131m bulunuyor. Hata mesaj\u0131 runtime ile gelen hata nesnesinin <strong>message<\/strong> alan\u0131nda yer almaktad\u0131r. Toparlayacak olursak kodumuz a\u015fa\u011f\u0131daki gibi olacakt\u0131r;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using Enterprisecoding.JSHosting.Hosting;\nusing System;\nusing System.IO;\n\nnamespace Enterprisecoding.JSHosting {\n    class Program {\n        private static JavaScriptSourceContext currentSourceContext = JavaScriptSourceContext.FromIntPtr(IntPtr.Zero);\n\n        static void Main(string[] args) {\n            if (args == null || args.Length == 0) {\n                Console.Error.WriteLine(\"Kullan\u0131m :  JSHosting &lt;betik ad\u0131> &lt;parametreler>\");\n\n                return;\n            }\n\n            using (var calismaZamani = JavaScriptRuntime.Create()) {\n                var context = calismaZamani.CreateContext();\n\n                using (new JavaScriptContext.Scope(context)) {\n                    var betikAdi = args[0];\n                    var betik = File.ReadAllText(betikAdi);\n\n                    JavaScriptValue sonuc;\n                    try {\n                        sonuc = JavaScriptContext.RunScript(betik, currentSourceContext++, betikAdi);\n                    }\n                    catch (JavaScriptScriptException e) {\n                        var messageName = JavaScriptPropertyId.FromString(\"message\");\n                        var messageValue = e.Error.GetProperty(messageName);\n                        var message = messageValue.ToString();\n\n                        Console.Error.WriteLine(\"JSHosting: Hata: {0}\", message);\n                    }\n                    catch (Exception e) {\n                        Console.Error.WriteLine(\"JSHosting: Betik \u00e7al\u0131\u015ft\u0131r\u0131l\u0131rken hata olu\u015ftu: {0}\", e.Message);\n                    }\n                }\n            }\n\n            Console.ReadKey();\n        }\n    }\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Kodumuzu test edebilmek i\u00e7in projeye test.js ad\u0131yla bir script ekleyip, her defas\u0131nda \u00e7\u0131kt\u0131 klas\u00f6r\u00fcne kopyalanmas\u0131n\u0131 sa\u011flayal\u0131m. test.js i\u00e7eri\u011fini ise konumuza uygun olarak a\u015fa\u011f\u0131daki \u015fekilde haz\u0131rl\u0131yorum \ud83d\ude42<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">alert(\"Merhaba D\u00fcnya\");<\/pre>\n\n\n\n<p>&nbsp; Kodumuzu derleyip, \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zdaaaa;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-ilk-hata.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-ilk-hata_thumb.png\" alt=\"Kodumuzu bir araya toplad\u0131ktan sonra \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda ilk hatam\u0131z\u0131 ald\u0131k : Javascript kullan\u0131m hatas\u0131-ge\u00e7ersiz arguman\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; hep birlikte ilk hatam\u0131za merhaba diyelim;<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>An unhandled exception of type &#8216;Enterprisecoding.JSHosting.Hosting.<strong>JavaScriptUsageException&#8217;<\/strong> occurred in Enterprisecoding.JSHosting.exe<\/p><p>Additional information: <strong>Invalid argument<\/strong>.<\/p><\/blockquote>\n\n\n\n<p>&nbsp;&nbsp; Hata mesaj\u0131n\u0131 inceledi\u011fimizde Javascript kullan\u0131m\u0131m\u0131z ile ilgili bir hata oldu\u011fu g\u00f6r\u00fcl\u00fcyor, ge\u00e7ersiz arguman; fakat hatay\u0131 tespitte yeterli bir bilgi de\u011fil. Call Stack penceresinden hatay\u0131 takip etti\u011fimizde <strong>Program<\/strong> s\u0131n\u0131f\u0131 <strong>Main<\/strong> fonksiyonu i\u00e7erisinde bir hata ald\u0131\u011f\u0131m\u0131z\u0131 g\u00f6rebiliriz;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-call-stack.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-call-stack_thumb.png\" alt=\"Hataya ait call stack\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-excepion.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-excepion_thumb.png\" alt=\"Hatan\u0131n meydana geldi\u011fi kod sat\u0131r\u0131\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; Beti\u011fimizin \u00e7al\u0131\u015fmas\u0131 s\u0131ras\u0131nda ald\u0131\u011f\u0131m\u0131z bir hatay\u0131 konsolda g\u00f6stermeye \u00e7al\u0131\u015f\u0131rken ikinci bir hata ile kar\u015f\u0131la\u015f\u0131lm\u0131\u015f. Javascript\u2019in do\u011fas\u0131 gere\u011fi dikkat edecek olursan\u0131z betik i\u00e7erisinde\u011fi nesnelere reflection\u2019\u0131 an\u0131msatan i\u015flemlerle ula\u015f\u0131yoruz. Bu noktada akla verdi\u011fimiz string ile ilgili bir problem oldu\u011fu gelecektir. Microsoft taraf\u0131ndan sunulan \u00f6rnek kodlar da dikkatlice incelenecek olursa assembly.cs i\u00e7erisinde DllImport i\u00e7in varsay\u0131lan olarak unicode kullan\u0131ls\u0131n diye a\u015fa\u011f\u0131daki gibi bir girdi oldu\u011fu g\u00f6r\u00fclecektir;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[module: DefaultCharSet(CharSet.Unicode)]<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Biz de ayn\u0131 \u015fekilde assembly.cs dosyas\u0131na bu girdiyi ekleyip kodumuzu yeniden derlersek as\u0131l hata mesaj\u0131n\u0131 g\u00f6rebiliriz;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-undefined.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-undefined_thumb.png\" alt=\"&quot;alert&quot; fonksiyonu tan\u0131ms\u0131z hatas\u0131\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp; Durun bir dakika, \u201calert\u201d fonksiyonu tan\u0131ms\u0131z m\u0131??! Javascript\u2019in en temel fonksiyonlar\u0131ndan birisidir, alert.. ve tan\u0131ms\u0131z?<\/p>\n\n\n\n<p>&nbsp; Unutmay\u0131n JsRT ile bize sunulan JavaScript \u00e7al\u0131\u015fma moturu. Bunu ayn\u0131 .Net\u2019in CLR gibi d\u00fc\u015f\u00fcn\u00fcn; ama Temel S\u0131n\u0131f K\u00fct\u00fcphanesi (<em>Base Class Library-BCL<\/em>) olmayan bir CLR\u2026 Dolay\u0131s\u0131yla da BCL olmadan C# ile ne yapabiliyorsak burada da durum ayn\u0131\u2026<\/p>\n\n\n\n<p>&nbsp;&nbsp; Bu durumda i\u015f ba\u015fa d\u00fc\u015f\u00fcyor, bu harici javascript nesne ve fonksiyonlar\u0131n\u0131 uygulamam\u0131zda bizim sunmam\u0131z gerekiyor. Bu da bizi makalemizin bir di\u011fer k\u0131sm\u0131na ge\u00e7iyor; harici fonksiyon tan\u0131mlama.<\/p>\n\n\n\n<p>&nbsp;&nbsp; \u00d6nce i\u015fin kolay taraf\u0131ndan ba\u015flayay\u0131m; kod i\u00e7erisindeki <strong>Alert <\/strong>fonksiyonuma javascript runtime\u2019\u0131ndan eri\u015febilmek. \u0130\u015fe aktif execution context\u2019imin Global nesnesine ula\u015farak ba\u015flamal\u0131y\u0131m;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var globalObject = JavaScriptValue.GlobalObject;<\/pre>\n\n\n\n<p>&nbsp;&nbsp; S\u0131ra fonksiyon ad\u0131n\u0131 tan\u0131mlamakta;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var propertyId = JavaScriptPropertyId.FromString(\"alert\");<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Ard\u0131ndan da fonksiyonumu tan\u0131mlamal\u0131y\u0131z;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var function = JavaScriptValue.CreateFunction(Alert);<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Son olarak bunlar\u0131n hepsini bir araya toplamal\u0131y\u0131z. Global nesnemize <em>alert<\/em> ad\u0131n\u0131n az \u00f6nce tan\u0131mlad\u0131\u011f\u0131m\u0131z fonksiyon i\u00e7in kullan\u0131laca\u011f\u0131n\u0131 belirtmeliyiz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">globalObject.SetProperty(propertyId, function, true);<\/pre>\n\n\n\n<p>&nbsp; Dedi\u011fim gibi, bu i\u015fin kolay k\u0131sm\u0131. Yukar\u0131daki koda dikkat edecek olursan\u0131z <strong>CreateFunction<\/strong> \u00e7a\u011fr\u0131s\u0131na parametre olarak <em>Alert<\/em> ge\u00e7mekteyiz. CreateFunction fonksiyonu <strong>JavaScriptNativeFunction<\/strong> ad\u0131ndaki bir delegate\u2019i parametre olarak kabul etmekte. Bu delegate\u2019in tan\u0131m\u0131 bize Alert fonksiyonunun nas\u0131l bir imzaya sahip olmas\u0131 gerekti\u011fini de g\u00f6stermekte;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public delegate JavaScriptValue JavaScriptNativeFunction(\n    JavaScriptValue callee,\n    bool isConstructCall, \n\n    [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)]\n    JavaScriptValue[] arguments, \n\n    ushort argumentCount);<\/pre>\n\n\n\n<p>&nbsp;&nbsp; alert fonksiyonumuzun tek yapmas\u0131 gereken gelen parametrelerin her birini dola\u015farak string olarak al\u0131p konsola yazd\u0131rmak. Dolay\u0131s\u0131yla da kodu a\u015fa\u011f\u0131daki gibi olacakt\u0131r;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">private static JavaScriptValue Alert(JavaScriptValue callee, bool isConstructCall, JavaScriptValue[] arguments, ushort argumentCount) {\n    for (uint index = 1; index &lt; argumentCount; index++) {\n        if (index > 1) {\n            Console.Write(\" \");\n        }\n\n        Console.Write(arguments[index].ConvertToString().ToString());\n    }\n\n    Console.WriteLine();\n\n    return JavaScriptValue.Invalid;\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Hepsini toparlad\u0131\u011f\u0131m\u0131zda Program.cs dosyam\u0131z\u0131n i\u00e7i a\u015fa\u011f\u0131daki gibi olacakt\u0131r;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using Enterprisecoding.JSHosting.Hosting;\nusing System;\nusing System.IO;\n\nnamespace Enterprisecoding.JSHosting {\n    class Program {\n        private static JavaScriptSourceContext currentSourceContext = JavaScriptSourceContext.FromIntPtr(IntPtr.Zero);\n\n        static void Main(string[] args) {\n            if (args == null || args.Length == 0) {\n                Console.Error.WriteLine(\"Kullan\u0131m :  JSHosting &lt;betik ad\u0131> &lt;parametreler>\");\n\n                return;\n            }\n\n            using (var calismaZamani = JavaScriptRuntime.Create()) {\n                var context = calismaZamani.CreateContext();\n\n                using (new JavaScriptContext.Scope(context)) {\n                    var globalObject = JavaScriptValue.GlobalObject;\n\n                    var propertyId = JavaScriptPropertyId.FromString(\"alert\");\n                    var function = JavaScriptValue.CreateFunction(Alert);\n                    globalObject.SetProperty(propertyId, function, true);\n\n                    var betikAdi = args[0];\n                    var betik = File.ReadAllText(betikAdi);\n\n                    JavaScriptValue sonuc;\n                    try {\n                        sonuc = JavaScriptContext.RunScript(betik, currentSourceContext++, betikAdi);\n                    }\n                    catch (JavaScriptScriptException e) {\n                        var messageName = JavaScriptPropertyId.FromString(\"message\");\n                        var messageValue = e.Error.GetProperty(messageName);\n                        var message = messageValue.ToString();\n\n                        Console.Error.WriteLine(\"JSHosting: Hata: {0}\", message);\n                    }\n                    catch (Exception e) {\n                        Console.Error.WriteLine(\"JSHosting: Betik \u00e7al\u0131\u015ft\u0131r\u0131l\u0131rken hata olu\u015ftu: {0}\", e.Message);\n                    }\n                }\n            }\n\n            Console.ReadKey();\n        }\n\n        private static JavaScriptValue Alert(JavaScriptValue callee, bool isConstructCall, JavaScriptValue[] arguments, ushort argumentCount) {\n            for (uint index = 1; index &lt; argumentCount; index++) {\n                if (index > 1) {\n                    Console.Write(\" \");\n                }\n\n                Console.Write(arguments[index].ConvertToString().ToString());\n            }\n\n            Console.WriteLine();\n\n            return JavaScriptValue.Invalid;\n        }\n    }\n}<\/pre>\n\n\n\n<p>&nbsp; Kodumuzu derleyip \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda art\u0131k konsolda bekledi\u011fimiz gibi \u201c<em>Merhaba D\u00fcnya<\/em>\u201d yaz\u0131m\u0131z\u0131 g\u00f6rebiliriz;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-calisan-kod.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/jsrt-calisan-kod_thumb.png\" alt=\"T\u00fcm ad\u0131mlar sonras\u0131nda yazd\u0131\u011f\u0131m\u0131z javascript kodunun \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rebiliriz\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp; Son olarak bir ipucu; bilgisayar\u0131n\u0131za <strong>TypeScript<\/strong> kurarak do\u011frudan JavaScript \u00fczerinde \u00e7al\u0131\u015fmak yerine edit\u00f6r destekli ve nesnel olarak JavaScript kodlar\u0131n\u0131z\u0131 geli\u015ftirebilirsiniz. \u00d6rne\u011fin; projeye app.d.ts ad\u0131yla bir TypeScript dosyas\u0131 ekleyerek t\u00fcm fonksiyon tan\u0131mlamalar\u0131n\u0131z\u0131 bu dosya i\u00e7erisinde yapabilirsiniz. Ard\u0131ndan yukar\u0131daki \u00f6rne\u011fimiz i\u00e7in test.ts ad\u0131yla bir dosya olu\u015fturup <em>app.d.ts<\/em> dosyas\u0131na a\u015fa\u011f\u0131daki gibi referans verebilirsiniz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/\/ &lt;reference path=\"app.d.ts\"\/>\nalert(\"Merhaba D\u00fcnya\");<\/pre>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/TypeScript-otomatik-tamamlama.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2013\/07\/TypeScript-otomatik-tamamlama_thumb.png\" alt=\"Tan\u0131m dosyas\u0131na referans verilmesi sonras\u0131nda TypeScript gerekli IDE deste\u011fini sunacakt\u0131r\"\/><\/a><\/figure>","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp; Hat\u0131rlayacak olursan\u0131z ge\u00e7ti\u011fimiz hafta kaleme ald\u0131\u011f\u0131m makalemde sizlere JsRT (JavaScript RunTime)\u2019dan bahsetmi\u015ftim. \/\/Build\/ konferans\u0131n\u0131n b\u00fcy\u00fck duyurular\u0131 aras\u0131nda g\u00f6zden ka\u00e7an JsRT duyurusu, Internet Explorer 9 ile birlikte tan\u0131d\u0131\u011f\u0131m\u0131z Chakra javascript motorunun biz yaz\u0131l\u0131m geli\u015ftiriciler taraf\u0131ndan da kullan\u0131labilecek olmas\u0131 nedeniyle \u00f6nemliydi. &nbsp;&nbsp; Makaleyi kaleme ald\u0131\u011f\u0131m s\u0131rada bu duyuru o kadar yeniydi ki; hen\u00fcz ortada ne dok\u00fcmantasyon&#8230;<\/p>\n<p><a class=\"read-more\" href=\"https:\/\/fatihboy.com\/en\/jsrt-javascript-calisma-zamani-barindirma\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":33550,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[28],"tags":[328,329,330],"class_list":["post-33549","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-turkce","tag-chakra","tag-javascript","tag-jsrt"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JsRT; JavaScript \u00c7al\u0131\u015fma-Zaman\u0131 Bar\u0131nd\u0131rma - Fatih Boy<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihboy.com\/en\/jsrt-javascript-calisma-zamani-barindirma\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JsRT; JavaScript \u00c7al\u0131\u015fma-Zaman\u0131 Bar\u0131nd\u0131rma - Fatih Boy\" \/>\n<meta property=\"og:description\" content=\"&nbsp;&nbsp; Hat\u0131rlayacak olursan\u0131z ge\u00e7ti\u011fimiz hafta kaleme ald\u0131\u011f\u0131m makalemde sizlere JsRT (JavaScript RunTime)\u2019dan bahsetmi\u015ftim. \/\/Build\/ konferans\u0131n\u0131n b\u00fcy\u00fck duyurular\u0131 aras\u0131nda g\u00f6zden ka\u00e7an JsRT duyurusu, Internet Explorer 9 ile birlikte tan\u0131d\u0131\u011f\u0131m\u0131z Chakra javascript motorunun biz yaz\u0131l\u0131m geli\u015ftiriciler taraf\u0131ndan da kullan\u0131labilecek olmas\u0131 nedeniyle \u00f6nemliydi. &nbsp;&nbsp; Makaleyi kaleme ald\u0131\u011f\u0131m s\u0131rada bu duyuru o kadar yeniydi ki; hen\u00fcz ortada ne dok\u00fcmantasyon...Read More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihboy.com\/en\/jsrt-javascript-calisma-zamani-barindirma\/\" \/>\n<meta property=\"og:site_name\" content=\"Fatih Boy\" \/>\n<meta property=\"article:published_time\" content=\"2013-07-09T06:30:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-18T09:13:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/coded-stuff.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"1200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Fatih Boy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Boy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/\"},\"author\":{\"name\":\"Fatih Boy\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"headline\":\"JsRT; JavaScript \u00c7al\u0131\u015fma-Zaman\u0131 Bar\u0131nd\u0131rma\",\"datePublished\":\"2013-07-09T06:30:00+00:00\",\"dateModified\":\"2021-06-18T09:13:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/\"},\"wordCount\":1395,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/coded-stuff.jpg\",\"keywords\":[\"Chakra\",\"Javascript\",\"JsRt\"],\"articleSection\":[\"T\u00fcrk\u00e7e\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/\",\"url\":\"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/\",\"name\":\"JsRT; JavaScript \u00c7al\u0131\u015fma-Zaman\u0131 Bar\u0131nd\u0131rma - Fatih Boy\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/coded-stuff.jpg\",\"datePublished\":\"2013-07-09T06:30:00+00:00\",\"dateModified\":\"2021-06-18T09:13:24+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/#primaryimage\",\"url\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/coded-stuff.jpg\",\"contentUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/coded-stuff.jpg\",\"width\":1800,\"height\":1200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fatihboy.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JsRT; JavaScript \u00c7al\u0131\u015fma-Zaman\u0131 Bar\u0131nd\u0131rma\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihboy.com\/#website\",\"url\":\"https:\/\/fatihboy.com\/\",\"name\":\"Fatih Boy\",\"description\":\"Ki\u015fisel Web Sitesi\",\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihboy.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\",\"name\":\"Fatih Boy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"caption\":\"Fatih Boy\"},\"logo\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/fatihboy.com\"],\"url\":\"https:\/\/fatihboy.com\/en\/author\/fatih\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JsRT; JavaScript \u00c7al\u0131\u015fma-Zaman\u0131 Bar\u0131nd\u0131rma - Fatih Boy","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihboy.com\/en\/jsrt-javascript-calisma-zamani-barindirma\/","og_locale":"en_US","og_type":"article","og_title":"JsRT; JavaScript \u00c7al\u0131\u015fma-Zaman\u0131 Bar\u0131nd\u0131rma - Fatih Boy","og_description":"&nbsp;&nbsp; Hat\u0131rlayacak olursan\u0131z ge\u00e7ti\u011fimiz hafta kaleme ald\u0131\u011f\u0131m makalemde sizlere JsRT (JavaScript RunTime)\u2019dan bahsetmi\u015ftim. \/\/Build\/ konferans\u0131n\u0131n b\u00fcy\u00fck duyurular\u0131 aras\u0131nda g\u00f6zden ka\u00e7an JsRT duyurusu, Internet Explorer 9 ile birlikte tan\u0131d\u0131\u011f\u0131m\u0131z Chakra javascript motorunun biz yaz\u0131l\u0131m geli\u015ftiriciler taraf\u0131ndan da kullan\u0131labilecek olmas\u0131 nedeniyle \u00f6nemliydi. &nbsp;&nbsp; Makaleyi kaleme ald\u0131\u011f\u0131m s\u0131rada bu duyuru o kadar yeniydi ki; hen\u00fcz ortada ne dok\u00fcmantasyon...Read More","og_url":"https:\/\/fatihboy.com\/en\/jsrt-javascript-calisma-zamani-barindirma\/","og_site_name":"Fatih Boy","article_published_time":"2013-07-09T06:30:00+00:00","article_modified_time":"2021-06-18T09:13:24+00:00","og_image":[{"width":1800,"height":1200,"url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/coded-stuff.jpg","type":"image\/jpeg"}],"author":"Fatih Boy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatih Boy","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/#article","isPartOf":{"@id":"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/"},"author":{"name":"Fatih Boy","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"headline":"JsRT; JavaScript \u00c7al\u0131\u015fma-Zaman\u0131 Bar\u0131nd\u0131rma","datePublished":"2013-07-09T06:30:00+00:00","dateModified":"2021-06-18T09:13:24+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/"},"wordCount":1395,"commentCount":0,"publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"image":{"@id":"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/coded-stuff.jpg","keywords":["Chakra","Javascript","JsRt"],"articleSection":["T\u00fcrk\u00e7e"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/","url":"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/","name":"JsRT; JavaScript \u00c7al\u0131\u015fma-Zaman\u0131 Bar\u0131nd\u0131rma - Fatih Boy","isPartOf":{"@id":"https:\/\/fatihboy.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/#primaryimage"},"image":{"@id":"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/coded-stuff.jpg","datePublished":"2013-07-09T06:30:00+00:00","dateModified":"2021-06-18T09:13:24+00:00","breadcrumb":{"@id":"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/#primaryimage","url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/coded-stuff.jpg","contentUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2021\/06\/coded-stuff.jpg","width":1800,"height":1200},{"@type":"BreadcrumbList","@id":"https:\/\/fatihboy.com\/jsrt-javascript-calisma-zamani-barindirma\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fatihboy.com\/"},{"@type":"ListItem","position":2,"name":"JsRT; JavaScript \u00c7al\u0131\u015fma-Zaman\u0131 Bar\u0131nd\u0131rma"}]},{"@type":"WebSite","@id":"https:\/\/fatihboy.com\/#website","url":"https:\/\/fatihboy.com\/","name":"Fatih Boy","description":"Ki\u015fisel Web Sitesi","publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihboy.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158","name":"Fatih Boy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","caption":"Fatih Boy"},"logo":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/fatihboy.com"],"url":"https:\/\/fatihboy.com\/en\/author\/fatih\/"}]}},"brizy_media":[],"_links":{"self":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33549","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/comments?post=33549"}],"version-history":[{"count":1,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33549\/revisions"}],"predecessor-version":[{"id":33551,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/33549\/revisions\/33551"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media\/33550"}],"wp:attachment":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media?parent=33549"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/categories?post=33549"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/tags?post=33549"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}