(keyInfo.protoHasKey && (typeof targetValue !== "function"))
);
},
addMethodsAndSymbols: function(Type){
typeEventMixin(Type);
canReflect.assignSymbols(Type, {
"can.defineInstanceKey": function(prop, value) {
getterHelpers.ensureTypeDefinition(this)[prop] = value;
},
"can.dispatchInstanceBoundChange": function(obj, isBound) {
var meta = this[metaSymbol];
if (meta) {
var lifecycleHandlers = meta.lifecycleHandlers;
if (lifecycleHandlers) {
queues.enqueueByQueue(lifecycleHandlers.getNode([]), this, [obj, isBound]);
}
}
}
});
Type.prototype.addEventListener = function(key, handler, queue){
var getObservation = this[computedDefinitionsSymbol][key];
if(getObservation !== undefined) {
getObservation(this).bind();
}
return eventMixin.addEventListener.call(this, key, handler, queue);
};
Type.prototype.removeEventListener = function(key, handler, queue){
var getObservation = this[computedDefinitionsSymbol][key];
if(getObservation !== undefined) {
getObservation(this).unbind();
}
return eventMixin.removeEventListener.call(this, key, handler, queue);
};
},
setupComputedProperties: function(prototype){
var computed = {};
Object.getOwnPropertyNames(prototype).forEach(function(prop){
var descriptor = Object.getOwnPropertyDescriptor(prototype,prop);
if(descriptor.get !== undefined) {
var getObservationData = memoizeGetter(prototype,prop,descriptor);
computed[prop] = getObservationData;
}
});
return computed;
},