2011-07-14 28 views

cevap

19

hasOwnProperty:

if(Object.prototype.hasOwnProperty.call(dictionary, key)) { 
    // ... 

Ayrıca the in operator kullanabilirsiniz, ama bazen istenmeyen sonuçlar verir:

console.log('watch' in dictionary); // always true 
+0

İstenmeyen sonuçlar ne zaman veriyor? – qwertymk

+5

@qwertymk: Bazen, yalnızca prototiplerle miras alınanlardan ziyade, nesneye eklediğiniz özellikler için yalnızca 'true' döndürmesini istiyorsunuz. “In” operatörü daha çok Python'un “hasattr” gibidir. – icktoofay

5

'İçindekiler'.

if ('school' in dictionary) 
+5

: 'Alanı'nda operatör de Python bu şekilde çalışır ve birçok kişi()' yöntem 'has_key için tercih bulabilirsiniz. – brandizzi

+2

@brandizzi, aslında, has_key kullanımdan kaldırılmıştır, bundan kaçınılmalıdır. –

9

Ya in operatörle:

if('school' in dictionary) { … 

Ya muhtemelen daha bowsers desteklenen: hasOwnProperty

if(dictionary.hasOwnProperty('school')) { … 

sınır vakalarda sorunlu olabilir: typeof

if(typeof dictionary.school != 'undefined') { … 

biri olarak tanımlanmamış != undefined değil bir anahtar kelime ve bunun semantik olduğunu kullanmamalıdır tarayıcılar arasında değişir:

if(dictionary.school != undefined) { … 

4

Ayrıca deneyebilirsiniz:

if(dictionary.hasOwnProperty('school')) 

hasOwnProperty yöntem mülkiyet örneğinde aslında ise sadece true için değerlendirmek ve sadece prototip miras olmaz - olarak in ile durumdur. Örneğin, ('toString' in myObject) değerlendirildiğinde, false olurken true değerlendirilecektir. Sadece bir not

0

Hatta,

if(dictionary.school!=undefined) 
İlgili konular