{"id":36,"date":"2012-10-07T13:39:31","date_gmt":"2012-10-07T10:39:31","guid":{"rendered":"http:\/\/ulviercan.com\/teknoblog\/?p=36"},"modified":"2015-01-05T19:06:24","modified_gmt":"2015-01-05T16:06:24","slug":"genel-bakis-jquery-ve-veri-tipleri","status":"publish","type":"post","link":"https:\/\/www.ulviercan.com\/teknoblog\/jquery\/genel-bakis-jquery-ve-veri-tipleri\/","title":{"rendered":"Genel Bak\u0131\u015f: jQuery ve Veri Tipleri"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-38\" style=\"padding: 3px; border: 1px solid #e6e3d9;\" title=\"jquery\" src=\"https:\/\/ulviercan.com\/teknoblog\/wp-content\/uploads\/2012\/10\/jquery.png\" alt=\"\" width=\"450\" height=\"100\" srcset=\"https:\/\/www.ulviercan.com\/teknoblog\/wp-content\/uploads\/2012\/10\/jquery.png 450w, https:\/\/www.ulviercan.com\/teknoblog\/wp-content\/uploads\/2012\/10\/jquery-300x67.png 300w, https:\/\/www.ulviercan.com\/teknoblog\/wp-content\/uploads\/2012\/10\/jquery-248x55.png 248w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><br \/>\n<!--Ads1--><br \/>\nTekardan merhabalar. \u00d6n\u00fcm\u00fczdeki haftalarda payla\u015faca\u011f\u0131m konulara \u00f6n ayak olmas\u0131 bak\u0131m\u0131ndan jQuery&#8217;nin tan\u0131m\u0131n\u0131 yapmay\u0131 ve \u00f6nemli bir ka\u00e7 noktas\u0131ndan bahsetmeyi uygun g\u00f6r\u00fcyorum.<\/p>\n<p>JQuery nedir sorusunun cevab\u0131 asl\u0131nda \u00e7ok basit. \u0130nternet programc\u0131l\u0131\u011f\u0131 ile uzun y\u0131llard\u0131r u\u011fra\u015fan biri olarak \u015funu s\u00f6yleyebilirim: &#8220;Hazinedir&#8221;. \u0130\u015fin teknik boyutuna gelirsek, jQuery t\u00fcm taray\u0131c\u0131larda sorunsuz \u00e7al\u0131\u015fan, arama motoru dostu bir JavaScript k\u00fct\u00fcphanesidir.<\/p>\n<p>2000&#8217;li y\u0131llarda internet programc\u0131l\u0131\u011f\u0131 ile u\u011fra\u015fan arkada\u015flar an\u0131msayacakt\u0131r. Yazd\u0131\u011f\u0131m\u0131z JavaScript kodu Mozilla&#8217;da \u00e7al\u0131\u015f\u0131rken, Internet Explorer&#8217;da \u00e7al\u0131\u015fmazd\u0131, veya tam tersi. \u0130\u015fte bu zamanlarda imdad\u0131m\u0131za yeti\u015fen jQuery sadece taray\u0131c\u0131 uyumlulu\u011fu ile de\u011fil, beraberinde getirdi\u011fi istemci tarafl\u0131 uygulama geli\u015ftirme kolayl\u0131\u011f\u0131, eklentileri ve ekstra \u00f6zellikleriyle \u00f6ne \u00e7\u0131kt\u0131. \u00d6n\u00fcm\u00fczdeki haftalarda bahsedece\u011fim bu ekstra \u00f6zelliklere ge\u00e7meden \u00f6nce genel bir giri\u015f yap\u0131p veri tiplerinden bahsetmek istiyorum.<\/p>\n<p><!--more--><\/p>\n<p>JQuery bir \u00e7ok yerle\u015fik veri tipi sunmaktad\u0131r. Bu yerle\u015fik veri tiplerine ek olarak se\u00e7iciler (selectors), \u00a0olaylar (events) gibi geli\u015fmi\u015f s\u00f6zde tiplerden bahsedece\u011fim.<\/p>\n<p>(Not: Bu makaledeki baz\u0131 kelimeleri \u00f6zellikle \u00e7evirmedim, \u00e7\u00fcnk\u00fc T\u00fcrk\u00e7e&#8217;de tam olarak kar\u015f\u0131l\u0131klar\u0131 yok)<\/p>\n<ol>\n<li>Dizgi (String)\n<ul>\n<li>T\u0131rnak Kullan\u0131m\u0131<\/li>\n<li>Yerle\u015fik Metotlar<\/li>\n<li>Length \u00d6zelli\u011fi<\/li>\n<li>Varsay\u0131lan Boolean De\u011ferleri<\/li>\n<\/ul>\n<\/li>\n<li>Say\u0131\n<ul>\n<li>Varsay\u0131lan Boolean De\u011ferleri<\/li>\n<li>Math<\/li>\n<li>Say\u0131lar\u0131 Ayr\u0131\u015ft\u0131rma<\/li>\n<li>Say\u0131dan Stringe D\u00f6n\u00fc\u015ft\u00fcrme<\/li>\n<li>NaN ve Infinity<\/li>\n<li>Integer<\/li>\n<li>Float<\/li>\n<\/ul>\n<\/li>\n<li>Boolean<\/li>\n<li>Nesne (Object)\n<ul>\n<li>Nokta G\u00f6sterimi<\/li>\n<li>Dizi G\u00f6sterimi<\/li>\n<li>\u0130terasyon (Iteration)<\/li>\n<li>Varsay\u0131lan Boolean De\u011ferleri<\/li>\n<li>Prototip (Prototype)<\/li>\n<\/ul>\n<\/li>\n<li>Dizi\n<ul>\n<li>\u0130terasyon (Iteration)<\/li>\n<li>Varsay\u0131lan Boolean De\u011ferleri<\/li>\n<li>Array G\u00f6sterimi<\/li>\n<\/ul>\n<\/li>\n<li>D\u00fcz Nesne (PlainObject)<\/li>\n<li>Fonksiyon\n<ul>\n<li>Arg\u00fcmanlar<\/li>\n<li>Ba\u011flam, \u00c7a\u011f\u0131rma ve Uygulama<\/li>\n<li>Kapsam<\/li>\n<li>Kilitler<\/li>\n<li>Proxy Pattern<\/li>\n<\/ul>\n<\/li>\n<li>CallBack<\/li>\n<li>Se\u00e7ici (Selector)<\/li>\n<li>Olay (Event)<\/li>\n<li>Element<\/li>\n<li>jQuery<\/li>\n<li>XMLHttpRequest<\/li>\n<li>jqXHR<\/li>\n<li>Deferred Object<\/li>\n<li>Promise Object<\/li>\n<li>Callbacks Object<\/li>\n<\/ol>\n<div><\/div>\n<h1>Dizgi (String)<\/h1>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n&quot;Ben bir String'im&quot;;\r\n'Ben de \u00f6yle!'\r\n<\/pre>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n\u00d6rnek Uygulama -&gt; https:\/\/www.jsfiddle.net\/icntfan\/uGA3v\/\r\n\r\ntypeof(&quot;bir string&quot;); \/\/ &quot;string&quot;\r\ntypeof('bir string'); \/\/ &quot;string&quot;\r\n<\/pre>\n<h3>T\u0131rnak Kullan\u0131m\u0131<\/h3>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n&quot;Selam. 'Ben' bir kodum.&quot;\r\n'Memnun oldum.'\r\n\r\n&quot;&lt;a href=&quot;\\ev\\&quot;&gt;Ev&lt;\/a&gt;&quot;\r\n<\/pre>\n<h3>Yerle\u015fik Metotlar<\/h3>\n<p>JavaScript&#8217;teki String&#8217;ler baz\u0131 yerle\u015fik metotlara sahiplerdir. Bunlardan d\u00f6nen de\u011ferler, yine string olacakt\u0131r. Baz\u0131 metotlarda farkl\u0131 de\u011ferler d\u00f6nebilir (Array gibi).<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n\u00d6rnek Uygulama -&gt; https:\/\/www.jsfiddle.net\/icntfan\/82hbx\/\r\n\r\ndocument.write(&quot;merhaba&quot;.charAt(\u00a00\u00a0))\u00a0\/\/ &quot;m&quot;\r\ndocument.write(&quot;merhaba&quot;.toUpperCase())\u00a0\/\/ &quot;MERHABA&quot;\r\ndocument.write(&quot;Merhaba&quot;.toLowerCase())\u00a0\/\/ &quot;merhaba&quot;\r\ndocument.write(&quot;merhaba&quot;.replace(\u00a0\/e|o\/g,\u00a0&quot;x&quot;\u00a0))\u00a0\/\/ &quot;mxrhaba&quot;\r\ndocument.write(&quot;1,2,3&quot;.split(\u00a0&quot;,&quot;\u00a0))\u00a0\/\/ &#x5B; &quot;1&quot;, &quot;2&quot;, &quot;3&quot; ]\r\n<\/pre>\n<h3>length \u00d6zelli\u011fi<\/h3>\n<p>B\u00fct\u00fcn dizgilerin (string) length \u00f6zelli\u011fi vard\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n\u00d6rnek Uygulama -&gt; https:\/\/www.jsfiddle.net\/icntfan\/uy9Zq\/\r\n\r\n&quot;Merhaba&quot;.length \/\/ 7\r\n&quot;&quot;.length \/\/ 0\r\n<\/pre>\n<h3>Varsay\u0131lan Boolean De\u011ferleri<\/h3>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n!&quot;&quot; \/\/ true\r\n!&quot;merhaba&quot; \/\/ false\r\n!&quot;true&quot; \/\/ false\r\n!new Boolean( false ) \/\/ false\r\n<\/pre>\n<h1>Say\u0131<\/h1>\n<p>Say\u0131lar ayn\u0131 dizgiler oldu\u011fu gibi (immutable) de\u011fi\u015fmezler. C tabanl\u0131 dillerdeki t\u00fcm yayg\u0131n operat\u00f6rler ile say\u0131larla \u00e7al\u0131\u015f\u0131labilir (+, -, *, \/, %, =, +=, -=, *=, \/=, ++, &#8211;). Say\u0131lar\u0131n JavaScript dilindeki tip kar\u015f\u0131l\u0131\u011f\u0131 &#8220;number&#8221; d\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ntypeof 12 \/\/ &quot;number&quot;\r\ntypeof 3.543 \/\/ &quot;number&quot;\r\n<\/pre>\n<h3>Varsay\u0131lan Boolean De\u011ferleri<\/h3>\n<p>E\u011fer say\u0131 &#8220;0&#8221; ise boolean de\u011feri &#8220;false&#8221; tur.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n!0 \/\/ true\r\n!1 \/\/ false\r\n!-1 \/\/ false\r\n<\/pre>\n<h3>Math<\/h3>\n<p>JavaScript Math nesnesi ile beraber say\u0131larla \u00e7al\u0131\u015fmak \u00fczere faydal\u0131 gere\u00e7ler sunmaktad\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nMath.PI \/\/ 3.141592653589793\r\nMath.cos( Math.PI ) \/\/ -1\r\n<\/pre>\n<h3>Say\u0131lar\u0131 Ayr\u0131\u015ft\u0131rma<\/h3>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nparseInt( &quot;123&quot; ) = 123 \/\/ (\u00f6rt\u00fcl\u00fc ondal\u0131k)\r\nparseInt( &quot;010&quot; ) = 8 \/\/ (\u00f6rt\u00fcl\u00fc sekizlik)\r\nparseInt( &quot;0xCAFE&quot; ) = 51966 \/\/ (\u00f6rt\u00fcl\u00fc on alt\u0131l\u0131k)\r\nparseInt( &quot;010&quot;, 10 ) = 10 \/\/ (belirtilmi\u015f ondal\u0131k)\r\nparseInt( &quot;11&quot;, 2 ) = 3 \/\/ (belirtilmi\u015f ikilik)\r\nparseFloat( &quot;10.10&quot; ) = 10.1\r\n<\/pre>\n<h3>Say\u0131dan Dizgiye D\u00f6n\u00fc\u015ft\u00fcrme<\/h3>\n<p>Say\u0131lar\u0131 dizgilere ekledi\u011fimizde sonu\u00e7 &#8220;string&#8221; olacakt\u0131r. Operat\u00f6rler ayn\u0131 oldu\u011fundan dolay\u0131 dikkatli olmakta fayda var. Say\u0131lar\u0131 toplad\u0131ktan sonra dizgilere eklemek istiyorsak parantez i\u00e7ine almam\u0131z gerekecektir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n&quot;&quot; + 1 + 2; \/\/ &quot;12&quot;\r\n&quot;&quot; + ( 1 + 2 ); \/\/ &quot;3&quot;\r\n&quot;&quot; + 0.0000001; \/\/ &quot;1e-7&quot;\r\nparseInt( 0.0000001 ); \/\/ 1 (!)\r\n<\/pre>\n<p>Veya JavaScript dilinin bize sunmu\u015f oldu\u011fu &#8220;String&#8221; s\u0131n\u0131f\u0131n\u0131 kullanarak de\u011ferleri bir &#8220;string&#8221; gibi i\u015fleyebiliriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nString( 1 ) + String( 2 ); \/\/ &quot;12&quot;\r\nString( 1 + 2 ); \/\/ &quot;3&quot;\r\n<\/pre>\n<h3>NaN and Infinity<\/h3>\n<p>&#8220;NaN: Not a Number&#8221; yani &#8220;Bir Say\u0131 De\u011fil&#8221;<br \/>\n&#8220;Infinity&#8221; Ad\u0131ndan anla\u015f\u0131laca\u011f\u0131 \u00fczere sonsuzlu\u011fu ifade ediyor.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nparseInt( &quot;hello&quot;, 10 ) \/\/ NaN\r\nisNaN( parseInt(&quot;hello&quot;, 10) ) \/\/ true\r\n<\/pre>\n<p>Herhangi bir say\u0131y\u0131 s\u0131f\u0131ra b\u00f6lmenin sonucu sonsuzluktur<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n1 \/ 0 \/\/ Infinity yani Sonsuzluk\r\n<\/pre>\n<p>NaN ve Infinity de\u011ferleri birer say\u0131d\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ntypeof NaN \/\/ &quot;number&quot;\r\ntypeof Infinity \/\/ &quot;number&quot;\r\n<\/pre>\n<p>Tuhaf kar\u015f\u0131la\u015ft\u0131rmalar:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nNaN == NaN \/\/ false (!)\r\nama\r\nInfinity == Infinity \/\/ true\r\n<\/pre>\n<h3>Integer<\/h3>\n<p>Integer bir say\u0131 tipidir, ancak belirtildi\u011fi takdirde tam say\u0131 beklenir<\/p>\n<h3>Float<\/h3>\n<p>Float bir say\u0131 tipidir, ancak belirtildi\u011fi takdirde ondal\u0131k say\u0131 beklenir.<\/p>\n<h1>Boolean<\/h1>\n<p>Boolean de\u011fer JavaScript&#8217;te &#8220;true&#8221; veya &#8220;false&#8221; olabilir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nif (true) console.log(&quot;Her zaman!&quot;)\r\nif (false) console.log(&quot;Asla!&quot;)\r\n<\/pre>\n<h1>Nesne<\/h1>\n<p>JavaScript&#8217;teki her \u015fey birer nesnedir. Ama baz\u0131lar\u0131 daha bir nesnedir :). Bir nesne yaratman\u0131n en temel yolu:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar x = {};\r\nvar y = {\r\n  isim: &quot;Osman&quot;,\r\n  yas: 27\r\n};\r\n<\/pre>\n<h3>Nokta G\u00f6sterimi<\/h3>\n<p>Bir nesnenin \u00f6zelliklerini nokta (.) kullanarak okuyup, yazabiliriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ny.isim \/\/ &quot;Osman&quot;\r\ny.yas \/\/ 27\r\nx.isim = y.isim + &quot; Yahya&quot; \/\/ &quot;Osman Yahya&quot;\r\nx.yas = y.yas + 1 \/\/ 28\r\n<\/pre>\n<h3>Dizi G\u00f6sterimi<\/h3>\n<p>Bir nesnenin \u00f6zelliklerini sanki bir diziymi\u015f gibi okuyup, yazabiliriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar operasyonlar = {\r\n  arttir: &quot;++&quot;,\r\n  azalt: &quot;--&quot;\r\n};\r\nvar operasyon= &quot;arttir&quot;;\r\noperasyonlar &#x5B; operasyon ] \/\/ &quot;++&quot;\r\noperasyonlar &#x5B; &quot;carpma&quot; ] = &quot;*&quot;; \/\/ &quot;*&quot;\r\n<\/pre>\n<h3>\u0130terasyon<\/h3>\n<p>\u0130terasyon i\u015flemi \u015fu \u015fekilde yap\u0131labilir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar nesne = {\r\n  isim: &quot;Osman&quot;,\r\n  yas: 27\r\n};\r\nfor( anahtar in nesne ) {\r\n  alert( &quot;anahtar  &quot; + &#x5B; anahtar ] + &quot;, de\u011fer &quot; + nesne&#x5B; anahtar] );\r\n}\r\n<\/pre>\n<h3>Varsay\u0131lan\u00a0Boolean De\u011ferleri<\/h3>\n<p>Bir nesnenin herhangi bir \u00f6zelli\u011fi olsun veyahut olmas\u0131n varsay\u0131lan de\u011feri asla &#8220;false&#8221; olmaz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n!{} \/\/ false\r\n<\/pre>\n<h3>Prototip (Prototype)<\/h3>\n<p>Her nesne prototip &#8220;prototype&#8221; \u00f6zelli\u011fine sahiptir. Yorumlay\u0131c\u0131 nesnenin \u00f6zelliklerini kontrol ederken prototipine de bakar. JQuery nesnelere metotlar\u0131 eklemek i\u00e7in yayg\u0131n olarak bunu kullan\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar form = $(&quot;#benimformum&quot;);\r\nform.clearForm; \/\/ belirtilmemi\u015f\r\nform.fn.clearForm = function() {\r\n  return this.find( &quot;:input&quot; ).each(function() {\r\n    this.value = &quot;&quot;;\r\n  }).end();\r\n};\r\nform.clearForm() \/\/ T\u00fcm jQuery nesneleri i\u00e7in \u00e7al\u0131\u015facakt\u0131r. \u00c7\u00fcnk\u00fc yeni metot, nesnenin prototipine eklenmi\u015ftir.\r\n<\/pre>\n<h1>Dizi<\/h1>\n<p>JavaScript dilindeki diziler de\u011fi\u015ftirilebilir listelerdir. Ger\u00e7ek olarak diziler \u015fu \u015fekilde ifade edilir:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar x = &#x5B;];\r\nvar y = &#x5B; 1, 2, 3 ];\r\n<\/pre>\n<p>Dizinin tipi nesne ise:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ntypeof &#x5B;]; \/\/ &quot;object&quot; nesne\r\ntypeof &#x5B; 1, 2, 3 ]; \/\/ &quot;object&quot; nesne\r\n<\/pre>\n<p>Dizi g\u00f6sterimi kullanarak dizideki elemanlar\u0131 okumak ve yazmak:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nx&#x5B; 0 ] = 1;\r\ny&#x5B; 2 ] \/\/ 3\r\n<\/pre>\n<h3>\u0130terasyon<\/h3>\n<p>Diziler iterasyonda da kullanabilece\u011fimiz length \u00f6zelli\u011fine sahiptirler.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nfor ( var i = 0; i &lt; a.length; i++ ) {\r\n  \/\/ a&#x5B;i] ile bir \u015feyler yap\r\n}\r\n<\/pre>\n<p>Performans\u0131n \u00f6nemli oldu\u011fu durumlarda dizinin uzunlu\u011fu bir kere almak faydal\u0131 olacakt\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nfor ( var i = 0, j = a.length; i &lt; j; i++ ) {\r\n  \/\/ Do something with a&#x5B;i]\r\n}\r\n<\/pre>\n<p>JQuery hem dizilerde hem de nesnelerde kullan\u0131lmak \u00fczere &#8220;each-function&#8221; dedi\u011fimiz iterasyon i\u00e7in kullan\u0131lan fonksiyonu bize sa\u011fl\u0131yor.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar x = &#x5B; 1, 2, 3 ];\r\njQuery.each( x, function( index, value ) {\r\n  console.log( &quot;index&quot;, index, &quot;value&quot;, value );\r\n});\r\n<\/pre>\n<p>Dizilere eleman eklemek i\u00e7in length \u00f6zelli\u011fini \u015fu \u015fekilde kullanabiliriz. Bu y\u00f6ntem .push() metodu ile ayn\u0131 i\u015flevi g\u00f6rmektedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar dizi = &#x5B;];\r\ndizi.push( 1 );\r\ndizi&#x5B; dizi.length ] = 2;\r\ndizi \/\/ &#x5B; 1, 2 ]\r\n<\/pre>\n<p>JavaScript k\u00fct\u00fcphanesine bakt\u0131\u011f\u0131m\u0131zda bu iki y\u00f6ntemi de g\u00f6rebiliriz. Yerle\u015fik olarak gelen di\u011fer metotlar \u015funlard\u0131r:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar x = &#x5B; 0, 3, 1, 2 ];\r\nx.reverse()      \/\/ &#x5B; 2, 1, 3, 0 ]\r\nx.join(&quot; \u2013 &quot;)    \/\/ &quot;2 - 1 - 3 - 0&quot;\r\nx.pop()          \/\/ &#x5B; 2, 1, 3 ]\r\nx.unshift( -1 )  \/\/ &#x5B; -1, 2, 1, 3 ]\r\nx.shift()        \/\/ &#x5B; 2, 1, 3 ]\r\nx.sort()         \/\/ &#x5B; 1, 2, 3 ]\r\nx.splice( 1, 2 ) \/\/ &#x5B; 2, 3 ]\r\n<\/pre>\n<p>Not: .unshift() metodu Internet Explorer&#8217;da length \u00f6zelli\u011fini d\u00f6nd\u00fcrmemektedir.<\/p>\n<h3>Varsay\u0131lan Boolean De\u011ferleri<\/h3>\n<p>Bir dizi dolu veya bo\u015f olsun varsay\u0131lan de\u011feri asla &#8220;false&#8221; olmaz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n!&#x5B;] \/\/ false\r\n<\/pre>\n<h3>Array G\u00f6sterimi<\/h3>\n<p>JQuery API&#8217;de her zaman kar\u015f\u0131la\u015fabilece\u011finiz bir g\u00f6sterim, Array:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ndragPrevention    Array\r\n<\/pre>\n<p>Bu kullan\u0131m beklenen de\u011ferin hem dizi (Array) olmas\u0131 gerekti\u011fini, hemde de\u011ferlerin &#8220;String&#8221; tipinde olmas\u0131 gerekti\u011fini belirtiyor.<\/p>\n<h1>D\u00fcz Nesne (PlainObject)<\/h1>\n<p>Bu veri tipi AJAX fonksiyonu taraf\u0131ndan istenen verileri tutmak i\u00e7in kulland\u0131\u011f\u0131m\u0131z tiptir. Bu tip bir &#8220;String&#8221; veya Array&lt;form&gt; \u015feklinde form elemanlar\u0131n\u0131 tutan bir dizi de olabilir. Checkbox&#8217;lar gibi ayn\u0131 isimleri verdi\u011fimiz form elamanlar\u0131ndaki verileri atamak i\u00e7in \u015fu \u015fekilde kullanabiliriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n{ 'anahtar&#x5B;]': &#x5B; 'degera', 'degerb' ] }\r\n<\/pre>\n<p>Sunucu taraf\u0131nda gelen veri \u015fu \u015fekilde kar\u015f\u0131lanacakt\u0131r.<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n&lt;!--?php $_REQUEST&#x5B;'key']&#x5B;0]=&quot;degera&quot;; $_REQUEST&#x5B;'key']&#x5B;1]=&quot;degerb&quot;; ?--&gt;\r\n<\/pre>\n<h1>Fonksiyon<\/h1>\n<p>JavaScript&#8217;te fonksiyonlar bir isme sahip olabilece\u011fi gibi isimsiz de olabilirler.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nfunction isimli() {}\r\nvar isimsiz = function() {}\r\n<\/pre>\n<p>JQuery&#8217;de bir \u00e7ok isimsiz fonksiyonla kar\u015f\u0131la\u015fabilirsiniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n$( document ).ready(function() {});\r\n$( &quot;a&quot; ).click(function() {});\r\n$.ajax({\r\n  url: &quot;birdosya.php&quot;,\r\n  success: function() {}\r\n});\r\n<\/pre>\n<h3>Arg\u00fcmanlar<\/h3>\n<p>Fonksiyonlar\u0131n i\u00e7erisinde iken \u00f6zel bir de\u011fi\u015fken olan &#8220;arguments&#8221; de\u011fi\u015fkenini her zaman kullanabiliriz. Bu y\u00f6n\u00fcyle dizilerdeki length \u00f6zelli\u011fine benzetebiliriz. Ancak bu de\u011fi\u015fken, dizilerle beraber yerle\u015fik olarak gelen metotlardan yoksundur. S\u00f6zde dizimizin elemanlar\u0131 fonksiyon \u00e7a\u011fr\u0131m\u0131z\u0131n arg\u00fcman\u0131d\u0131r. \u00d6rne\u011fe bakarsak daha iyi anla\u015f\u0131laca\u011f\u0131n\u0131 d\u00fc\u015f\u00fcn\u00fcyorum.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nfunction log( x ) {\r\n  console.log( typeof x, arguments.length );\r\n}\r\nlog(); \/\/ &quot;undefined&quot;, 0\r\nlog( 1 ); \/\/ &quot;number&quot;, 1\r\nlog( &quot;1&quot;, &quot;2&quot;, &quot;3&quot; ); \/\/ &quot;string&quot;, 3\r\n<\/pre>\n<p>Nesne arg\u00fcmanlar\u0131 art\u0131 olarak &#8220;callee&#8221; \u00f6zelli\u011fine sahiptirler. Bu \u00f6zellik i\u00e7inde bulundu\u011fumuz fonksiyona i\u015faret eder.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar cokguzel= function() { return arguments.callee; }\r\ncokguzel() == cokguzel\/\/ true\r\n<\/pre>\n<h3>Ba\u011flam, \u00c7a\u011f\u0131rma ve Uygulama<\/h3>\n<p>JavaScript&#8217;teki &#8220;this&#8221; de\u011fi\u015fkeni her daim bulundu\u011fu ba\u011flama i\u015faret eder. &#8220;This&#8221; de\u011fi\u015fkeni varsay\u0131lan olarak &#8220;window&#8221; nesnesine i\u015faret eder. Fonksiyonu \u00e7a\u011f\u0131rma \u015feklimize g\u00f6re, i\u015faret etti\u011fi ba\u011flam\u0131 de\u011fi\u015ftirebiliriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n$( document ).ready(function() {\r\n  \/\/ window.document e i\u015faret ediyor\r\n});\r\n$( &quot;a&quot; ).click(function() {\r\n  \/\/ bir \u00e7apa DOM eleman\u0131na i\u015faret ediyor\r\n});\r\n<\/pre>\n<p>Fonksiyonlar\u0131 de\u011fi\u015fik \u015fekillerde \u00e7a\u011f\u0131rabiliriz. Her birinin aras\u0131ndaki fark arg\u00fcman ge\u00e7irme tarz\u0131 olacakt\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nfunction scope() {\r\n  console.log( this, arguments.length );\r\n}\r\nscope() \/\/ window, 0\r\nscope.call( &quot;seyler&quot;, &#x5B; 1, 2 ] ); \/\/ &quot;seyler&quot;, 1\r\nscope.apply( &quot;seyler&quot;, &#x5B; 1, 2 ] ); \/\/ &quot;seyler&quot;, 2\r\n<\/pre>\n<h3>Kapsam<\/h3>\n<p>JavaScript&#8217;teki t\u00fcm de\u011fi\u015fkenler bulundu\u011fu fonksiyon kapsam\u0131 i\u00e7erisinde ge\u00e7erlidir. \u00d6rne\u011fin:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n\/\/ global\r\nvar a = 0;\r\n(function() {\r\n  \/\/ private\r\n  var a = 1;\r\n  console.log( a ); \/\/ 1\r\n})();\r\nconsole.log( a ); \/\/ 0\r\n<\/pre>\n<h3>Kilitler<\/h3>\n<p>Kilit mekanizmalar\u0131n\u0131 bir s\u0131n\u0131f i\u00e7erisinde tan\u0131mlanm\u0131\u015f, &#8220;private&#8221; de\u011fi\u015fkenlere benzetebiliriz. Sadece bulundu\u011fu fonksiyonlar taraf\u0131ndan de\u011fi\u015ftirilebilirler. \u00d6rnek daha iyi anlamam\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nfunction yarat() {\r\n  var sayac = 0;\r\n  return {\r\n    arttir: function() {\r\n      sayac++;\r\n    },\r\n    yazdir: function() {\r\n      console.log( sayac );\r\n    }\r\n  }\r\n}\r\nvar c = yarat();\r\nc.arttir();\r\nc.yazdir(); \/\/ 1\r\n<\/pre>\n<h3>Proxy Pattern<\/h3>\n<p>Bir &#8220;proxy pattern&#8221; dedi\u011fimiz yap\u0131y\u0131 uygulamak i\u00e7in (AOP) Aspect Oriented Programming&#8217;in temellerini uygulayabiliriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n(function() {\r\n  \/\/ T\u00fcm setArray \u00e7a\u011f\u0131rmalar\u0131n\u0131 k\u00fct\u00fckle (log)\r\n  var proxied = jQuery.fn.setArray;\r\n  jQuery.fn.setArray = function() {\r\n    console.log( this, arguments );\r\n    return proxied.apply( this, arguments );\r\n  };\r\n})();\r\n<\/pre>\n<h1>Callback<\/h1>\n<p>Callback&#8217;ler temel olarak birer JavaScript fonksiyonudur. Metotlara arg\u00fcman veya se\u00e7enek olarak ge\u00e7irilirler. Bulunan durum tetiklendi\u011finde kullan\u0131c\u0131ya tepki \u015fans\u0131 vermek i\u00e7in kullan\u0131lan olaylard\u0131r. JQuery&#8217;deki yap\u0131 \u015fu \u015fekildedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n$( &quot;body&quot; ).click(function( event ) {\r\n  console.log( &quot;t\u0131kland\u0131: &quot; + event.target );\r\n});\r\n<\/pre>\n<p>Baz\u0131 Callback&#8217;ler ise sadece bir \u015feyler d\u00f6nd\u00fcrmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n$( &quot;#formum&quot; ).submit(function() {\r\n  return false;\r\n});\r\n<\/pre>\n<p>Bu kullan\u0131mda s\u00fcrekli olarak &#8220;false&#8221; d\u00f6nd\u00fcrmek yerine, gerekli do\u011frulama i\u015flemlerinin ard\u0131ndan &#8220;true&#8221; de\u011feri de d\u00f6nd\u00fcr\u00fclebilir.<\/p>\n<h1>Se\u00e7ici (Selector)<\/h1>\n<p>Se\u00e7iciler bir DOM (Belge Nesnesi Modeli) belgedeki DOM eleman\u0131na ula\u015fmak i\u00e7in kullan\u0131l\u0131r. Bu konunun bir ucuna jQuery ve CSS makalesinde de\u011finece\u011fim. Bu konu hakk\u0131nda daha fazla bilgiye <a target=\"_blank\" href=\"https:\/\/api.jquery.com\/category\/selectors\/\">https:\/\/api.jquery.com\/category\/selectors\/<\/a> adresinden ula\u015fabilirsiniz.<\/p>\n<h1>Element<\/h1>\n<p>Bir DOM belgedeki t\u00fcm elementler niteliklere ve \u00e7ocuklara sahiptirler. Bu y\u00f6ntem bunlara kolayca ula\u015fmam\u0131z\u0131 sa\u011fl\u0131yor.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n$( &quot;:text&quot; ).blur(function() {\r\n  if( !this.value ) {\r\n    alert( &quot;L\u00fctfen bir \u015feyler girin!&quot; );\r\n  }\r\n});\r\n<\/pre>\n<h1>JQuery<\/h1>\n<p>JQuery nesnesi HTML veya bir belgeden se\u00e7ilen t\u00fcm DOM elemanlar\u0131 i\u00e7erir. jQuery() kullan\u0131m\u0131 uzun oldu\u011fundan $() \u015feklinde de kullan\u0131m\u0131 m\u00fcmk\u00fcn k\u0131l\u0131nm\u0131\u015ft\u0131r. jQuery.noConflict() kullanarak istedi\u011finiz karakteri, kelimeyi $() yerine kullanabilirsiniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar $j = jQuery.noConflict();\r\n<\/pre>\n<h1>XMLHttpRequest<\/h1>\n<p>AJAX metodu kullan\u0131l\u0131rken i\u015flem sonucunu ele al\u0131p ona g\u00f6re i\u015flem yapmam\u0131z\u0131 sa\u011flayan nesnedir.<\/p>\n<h1>jqXHR<\/h1>\n<p>JQuery 1.5 ile birlikte gelen $.ajax() metodu jqXHR nesnesini d\u00f6nd\u00fcrmektedir. Daha fazla bilgi i\u00e7in <a href=\"https:\/\/api.jquery.com\/jQuery.ajax\/#jqXHR\" target=\"_blank\">https:\/\/api.jquery.com\/jQuery.ajax\/#jqXHR<\/a> adresini ziyaret ediniz.<\/p>\n<h1>Deferred Object<\/h1>\n<p>JQuery 1.5 ile birlikte gelen Deferred nesnesi bir \u00e7ok callback olu\u015fturmam\u0131z\u0131 sa\u011flar. Daha fazla bilgiye <a href=\"https:\/\/api.jquery.com\/category\/deferred-object\/\" target=\"_blank\">https:\/\/api.jquery.com\/category\/deferred-object\/<\/a> adresinden ula\u015fabilirsiniz.<\/p>\n<h1>Promise Object<\/h1>\n<p>Deferred nesnesinin alt metotlar\u0131n\u0131 sa\u011flar (then, done, fail, always, pipe. isResolved, ve isRejected). Amac\u0131, kullan\u0131c\u0131n\u0131n deferred nesnenin durumunu de\u011fi\u015ftirmesini engellemektir.<\/p>\n<h1>Callbacks Object<\/h1>\n<p>\u00c7ok y\u00f6nl\u00fc bu nesnenin en g\u00fc\u00e7l\u00fc taraf\u0131 callback listleri y\u00f6netmektir. Callback&#8217;leri ekleme, silme, ate\u015fleme ve iptal etmek \u00f6zelli\u011fi vard\u0131r. Callback nesnesi $.Callbacks taraf\u0131ndan yarat\u0131l\u0131r ve geri d\u00f6nd\u00fcr\u00fcl\u00fcr.<\/p>\n<p>Faydalan\u0131lan kaynaklar:<br \/>\n1-) JQuery documentation -> Types | <a target=\"_blank\" href=\"https:\/\/api.jquery.com\/Types\/\">https:\/\/api.jquery.com\/Types\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tekardan merhabalar. \u00d6n\u00fcm\u00fczdeki haftalarda payla\u015faca\u011f\u0131m konulara \u00f6n ayak olmas\u0131 bak\u0131m\u0131ndan jQuery&#8217;nin tan\u0131m\u0131n\u0131 yapmay\u0131 ve \u00f6nemli bir ka\u00e7 noktas\u0131ndan bahsetmeyi uygun g\u00f6r\u00fcyorum. JQuery nedir sorusunun cevab\u0131 asl\u0131nda \u00e7ok basit. \u0130nternet programc\u0131l\u0131\u011f\u0131 ile uzun y\u0131llard\u0131r u\u011fra\u015fan biri olarak \u015funu s\u00f6yleyebilirim: &#8220;Hazinedir&#8221;. \u0130\u015fin teknik boyutuna gelirsek, jQuery t\u00fcm taray\u0131c\u0131larda sorunsuz \u00e7al\u0131\u015fan, arama motoru [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":38,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[21,43,42],"class_list":["post-36","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jquery","tag-jquery-2","tag-jquery-variable-types","tag-jquery-veri-tipleri"],"_links":{"self":[{"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/posts\/36","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/comments?post=36"}],"version-history":[{"count":118,"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/posts\/36\/revisions"}],"predecessor-version":[{"id":700,"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/posts\/36\/revisions\/700"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/media\/38"}],"wp:attachment":[{"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/media?parent=36"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/categories?post=36"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ulviercan.com\/teknoblog\/wp-json\/wp\/v2\/tags?post=36"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}