2012-03-01 14 views
17

में कक्षा का प्रकार प्राप्त करें एक बार ऑब्जेक्ट की उस कक्षा को तुरंत कैसे प्राप्त किया जा सकता है?कॉफीस्क्रिप्ट

class Cat 
    constructor: (@name) -> 

class Dog 
    constructor: (@name) -> 

cat = new Cat "Kitty" 
dog = new Dog "Doggy" 

if (cat == Cat) <- I want to do something like this 

उत्तर

26

से अधिक y अमूर्त बस बदलने ==instanceof

if(cat instanceof Cat) 
+0

धन्यवाद। यह ऑब्जेक्ट प्रकार को सरणी में लगाने में मेरी परियोजना के साथ मेरी मदद करेगा। – Alexis

+0

क्या ऑब्जेक्ट का नाम अनुमान लगाने और जांचने के लिए एक तरीका है? – Alexis

+0

http://stackoverflow.com/questions/7087712/get-the-model-type-for-a-passed-in-backbone-js-model-instance – sye

4

तरीका यह है या तो

instanceof 

या

typeof 

यानी

if (obj instanceof Awesomeness){ 
//doSomethingCrazy(); 
} 
बस के रूप में जावास्क्रिप्ट में

का उपयोग कर एक वस्तु के प्रकार की जांच करने के लिए है, कॉफी स्क्रिप्ट एक प्रदान नहीं करता है इन कार्यों

+0

ऑब्जेक्ट का नाम अनुमान लगाने और जांचने के लिए एक तरीका है? – Alexis

+0

@ एलेक्सिस मुझे लगता है कि टाइपफॉफ़ आप चाहते हैं। विशिष्ट कोड सहायता के लिए –

2

AFAIU करने के लिए, सामान्य समाधान @constructor का उपयोग करेंगे - उपयोगी है जब आप नहीं जानते या वर्ग के नाम निर्दिष्ट करने के लिए नहीं करना चाहती।

इसके लिए @@ शॉर्टकट बनाने के संबंध में a discussion भी था।

5

आप एक विशेष वस्तु के प्रकार के नाम जानना (जो क्या मैं सिर्फ जब मैं इस सवाल पाया लिए देख रहा था) चाहते हैं तो आपके वाक्य रचना {object}.constructor.name

उदाहरण के लिए उपयोग कर सकते हैं

class Cat 
    constructor: (@name) -> 

    class Dog 
    constructor: (@name) -> 

    cat = new Cat() 
    dog = new Dog() 

    console.log cat.constructor.name 
    console.log dog.constructor.name 

जो आउटपुट

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