Skip to content

Commit cb3caaa

Browse files
committed
Translated object/forinloop.
1 parent 6ea8784 commit cb3caaa

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

doc/tr/object/forinloop.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
## `for in` Döngüsü
2+
3+
Tıpkı `in` operatörü gibi `for in` döngüsü de bir nesnenin özellikleri üzerinde
4+
iterasyon yaparken prototip zincirini dolaşır.
5+
6+
> **Not:** `for in` döngüsü iterasyon yaparken `enumerable` niteliği `false`
7+
> olan özelliklere uğramaz; mesela, bir dizinin `length` özelliğini atlar.
8+
9+
// Object.prototype'a bar özelliğini ekle
10+
Object.prototype.bar = 1;
11+
12+
var foo = {moo: 2};
13+
for(var i in foo) {
14+
console.log(i); // hem bar hem de moo yazar
15+
}
16+
17+
`for in` döngüsünün davranışını değiştirmek mümkün olmadığı için, istenmeyen
18+
özelliklerin döngünün içinde filtrelenmesi gerekir, bu da `Object.prototype`
19+
nesnesinin [`hasOwnProperty`](#object.hasownproperty) metodu ile yapılır.
20+
21+
> **Not:** `for in` döngüsü tüm prototip zincirini dolaştığı için bir nesneye
22+
> eklenen her yeni kalıtım katmanı döngüyü biraz daha yavaşlatacaktır.
23+
24+
### `hasOwnProperty` kullarak filtrelemek
25+
26+
// yukarıdaki örnekteki foo nesnesi
27+
for(var i in foo) {
28+
if (foo.hasOwnProperty(i)) {
29+
console.log(i);
30+
}
31+
}
32+
33+
Doğru kullanım bu yeni versiyonda gösterildiği gibidir. `hasOwnProperty` kontrol
34+
edildiği için **sadece** `moo` yazacaktır. `hasOwnProperty` kullanılmaz ise ve
35+
`Object.protype` 'ın baz özellikleri değiştirilmişse, program bazı hatalara
36+
yatkın olabilir.
37+
38+
Bunu yapan ve yaygın olarak kullanılan bir JavaScript sistemi [Prototype][1]
39+
'dır. Bu sistemde `hasOwnProperty` kullanmayan `for in` döngüleri kesinlikle
40+
hatalı sonuç verecektir.
41+
42+
### Sonuç
43+
44+
`hasOwnProperty` **her zaman** kontrol edilmelidir. Programın içinde çalıştığı
45+
ortam için, nesnelerin baz özelliklerinin değiştirilip değiştirilmediğine dair
46+
hiçbir kabul yapılmamalıdır.
47+
48+
[1]: http://www.prototypejs.org/
49+

0 commit comments

Comments
 (0)