84 return [[
self alloc] init];
93 return class_createInstance(
self);
164 + (BOOL)isSubclassOfClass:(Class)aClass
168 for (; theClass; theClass = theClass.super_class)
169 if (theClass === aClass)
179 - (BOOL)isKindOfClass:(Class)aClass
181 return [
isa isSubclassOfClass:aClass];
184 + (BOOL)isKindOfClass:(Class)aClass
186 return [
self isSubclassOfClass:aClass];
193 - (BOOL)isMemberOfClass:(Class)aClass
195 return self.isa === aClass;
198 + (BOOL)isMemberOfClass:(Class)aClass
200 return self === aClass;
218 + (BOOL)instancesRespondToSelector:(
SEL)aSelector
220 return !!class_getInstanceMethod(
self, aSelector);
228 - (BOOL)respondsToSelector:(
SEL)aSelector
231 return !!class_getInstanceMethod(
isa, aSelector);
239 - (BOOL)implementsSelector:(
SEL)aSelector
241 var methods = class_copyMethodList(
isa),
242 count = methods.length;
245 if (method_getName(methods[count]) === aSelector)
258 - (IMP)methodForSelector:(
SEL)aSelector
260 return class_getMethodImplementation(
isa, aSelector);
268 + (IMP)instanceMethodForSelector:(
SEL)aSelector
270 return class_getMethodImplementation(
self, aSelector);
278 - (CPMethodSignature)methodSignatureForSelector:(
SEL)aSelector
295 return class_getName(
isa);
304 - (id)performSelector:(
SEL)aSelector
306 return objj_msgSend(
self, aSelector);
315 - (id)performSelector:(
SEL)aSelector withObject:(
id)anObject
317 return objj_msgSend(
self, aSelector, anObject);
327 - (id)performSelector:(
SEL)aSelector withObject:(
id)anObject withObject:(
id)anotherObject
329 return objj_msgSend(
self, aSelector, anObject, anotherObject);
338 - (id)performSelector:(
SEL)aSelector withObjects:(
id)anObject, ...
340 var params = [
self, aSelector].concat(Array.prototype.slice.apply(arguments, [3]));
341 return objj_msgSend.apply(
this, params);
344 - (id)forwardingTargetForSelector:(
SEL)aSelector
367 - (void)doesNotRecognizeSelector:(
SEL)aSelector
370 (class_isMetaClass(isa) ? "+" : "-") + " [" + [
self className] + " " + aSelector + "] unrecognized selector sent to " +
411 - (id)replacementObjectForArchiver:(CPArchiver)anArchiver
431 - (id)replacementObjectForCoder:(
CPCoder)aCoder
440 + (void)setVersion:(
int)aVersion
442 class_setVersion(
self, aVersion);
450 return class_getVersion(
self);
484 if (typeof
self._UID ===
"undefined")
485 self._UID = objj_generateObjectUID();
496 return self === anObject || [
self UID] === [anObject UID];
528 return isa.super_class;
537 if ([anObject isKindOfClass:
CPString])
538 return '@"' + [anObject description] +
'"';
539 return [anObject description];
542 if (typeof(anObject) !==
"object")
543 return String(anObject);
545 var desc =
"JSObject\n{\n";
547 for (var property in anObject)
549 if (anObject.hasOwnProperty(property))
554 return desc.split(
'\n').join(
"\n\t");