2012-07-14 11 views
6

क्या फ़ायरफ़ॉक्स और क्रोम के कंसोल में हुआ के लिए नीचे देखें:जावास्क्रिप्ट फ़ंक्शन पर संपत्ति "नाम" निर्दिष्ट करने की अनुमति क्यों नहीं देता है?

> var f = function() {} 
undefined 
> f.name = 'f' 
"f" 
> f.name 
"" 
> f.id = 1 
1 
> f.id 
1 

क्यों f.name = 'f' नो-सेशन है?

+1

आईई 9 में मेरे लिए ठीक काम करना। –

उत्तर

12

शायद कार्यान्वयन पर निर्भर करता है।

कुछ कार्यान्वयन में, name फ़ंक्शन ऑब्जेक्ट की प्रॉपर्टी का उपयोग फ़ंक्शन के नाम के रूप में किया जाता है यदि उसके पास एक है। यह संभवतः इन मामलों में केवल पढ़ने के लिए है।

यह एक गैर-मानक सुविधा है।

var foo = function bar() {}; 

alert(foo.name); // will give "bar" in some cases. 

फ़ायरफ़ॉक्स और क्रोम में, अगर मैं इसे संशोधित करने के लिए प्रयास करते हैं, यह नहीं बदलेगा ...

var foo = function bar() {}; 

foo.name = "baz"; 
alert(foo.name); // still "bar" in Firefox and Chrome 

  • MDN docs:

    उदाहरण के लिए

    name संपत्ति के लिए।

यहाँ डॉक्स से कुछ महत्वपूर्ण बिंदु हैं ...

"गैर मानक"

"नाम संपत्ति एक समारोह का नाम देता है, या एक अज्ञात कार्यों के लिए खाली स्ट्रिंग "

" आप किसी फ़ंक्शन का नाम नहीं बदल सकते हैं, यह संपत्ति केवल पढ़ने के लिए है "

संबंधित मुद्दे

 संबंधित मुद्दे