2017-06-01 11 views
6

मैं क्लाइंट-साइड पर टेबल निर्यात की एक प्लगइन विकसित कर रहा हूं। प्लगइन ठीक काम करता है। लेकिन जब मैंने अपने कोड को जिशिंट में मान्य किया, तो यह मुझे सख्त उल्लंघन कहने में एक त्रुटि फेंकता है। नीचे समारोह है:जावास्क्रिप्ट - jshint संभव सख्त उल्लंघन त्रुटि

function disableExport(){ 
     if(_(this).exportPlugin !== undefined){ 
      _(this).exportPlugin.setStyle('pointer-events', 'none'); 
      _(this).exportPlugin.find('.ebIcon').removeModifier('interactive','ebIcon'); 
      _(this).exportPlugin.find('.ebIcon').setModifier('disabled','','ebIcon'); 
     }else{ 
      console.log('ERROR!'); 
     } 
    } 

और यह कहते हैं: "। एक सख्त मोड समारोह समारोह मंगलाचरण का उपयोग कर मार डाला है, तो उसकी 'इस' मूल्य अपरिभाषित हो जाएगा"

प्लगइन का पूरा कोड https://jsfiddle.net/t47L8yyr/

पर उपलब्ध है मैं यह कैसे ठीक करूं? /*jshint validthis:true*/

+0

दोस्तों, हमने सवाल को डुप्लिकेट के रूप में बंद कर दिया जब ओपी ने स्पष्ट रूप से कहा कि दूसरे प्रश्न में स्वीकृत उत्तर उनके लिए उपयोगी नहीं था। आइए इसे दोबारा खोलें – slezica

+0

@ स्लेज़िका धन्यवाद – Valay

+0

इसे थोड़ी देर दें। जब इसे फिर से खोल दिया जाता है तो मैं – slezica

उत्तर

5

का उपयोग कर अपने disableExport() समारोह के अंदर के अलावा कोई अन्य समाधान है, आप this के लिए संदर्भ बनाते हैं। आप सामान्य रूप से कार्य ...

disableExport() 

... strict Javascript mode में आह्वान करते हैं, तो this अपरिभाषित हो जाएगा। सख्त मोड के बाहर, this आमतौर पर window ऑब्जेक्ट होगा। तो:

disableExport() // `this` will be `window` 

"use strict" 
disableExport() // `this` will be undefined 

यह अच्छा नहीं है। आप window वस्तु को लक्षित करना चाहते हैं, तो यह स्पष्ट रूप से उपयोग करें:

_(window).exportPlugin(...) // reference `window`, not `this` 

आप कार्य करने के लिए एक पैरामीटर के रूप this उपयोग करने का प्रयास कर रहे हैं, यह लागू Function.call() या Function.apply() साथ, यह एक वास्तविक लेने के लिए काफी बेहतर है पैरामीटर this उपयोग करने के लिए की तुलना में:

function disableExport(target) { 
    if(_(target).exportPlugin !== undefined) { 
    // ... 
    } 
} 

फिर आप disableExport(window) या किसी अन्य target कॉल कर सकते हैं। आमतौर पर किसी ऑब्जेक्ट के तरीकों से निपटने के दौरान this का उपयोग करने के लिए बेहतर होता है, को किसी फ़ंक्शन के prototype में या ES6 class syntax के माध्यम से परिभाषित किया जाता है।

+0

उत्तर के लिए धन्यवाद। क्या आप इसे https://jsfiddle.net/t47L8yyr/ में दिखा सकते हैं। मैं इसे बनाने के बाद '_ (this) .exportPlugin' में प्लगइन असाइन कर रहा हूं। – Valay

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