@@ -317,8 +317,8 @@ ComputedPropertyPrototype.didChange = function(obj, keyName) {
317317 }
318318
319319 let cache = meta . readableCache ( ) ;
320- if ( cache && cache [ keyName ] !== undefined ) {
321- cache [ keyName ] = undefined ;
320+ if ( cache && cache . get ( keyName ) !== undefined ) {
321+ cache . set ( keyName , undefined ) ;
322322 removeDependentKeys ( this , obj , keyName , meta ) ;
323323 }
324324} ;
@@ -330,8 +330,8 @@ ComputedPropertyPrototype.get = function(obj, keyName) {
330330
331331 let meta = metaFor ( obj ) ;
332332 let cache = meta . writableCache ( ) ;
333+ let result = cache . get ( keyName ) ;
333334
334- let result = cache [ keyName ] ;
335335 if ( result === UNDEFINED ) {
336336 return undefined ;
337337 } else if ( result !== undefined ) {
@@ -340,9 +340,9 @@ ComputedPropertyPrototype.get = function(obj, keyName) {
340340
341341 let ret = this . _getter . call ( obj , keyName ) ;
342342 if ( ret === undefined ) {
343- cache [ keyName ] = UNDEFINED ;
343+ cache . set ( keyName , UNDEFINED ) ;
344344 } else {
345- cache [ keyName ] = ret ;
345+ cache . set ( keyName , ret ) ;
346346 }
347347
348348 let chainWatchers = meta . readableChainWatchers ( ) ;
@@ -401,10 +401,12 @@ ComputedPropertyPrototype._set = function computedPropertySet(obj, keyName, valu
401401 // either there is a writable cache or we need one to update
402402 let cache = meta . writableCache ( ) ;
403403 let hadCachedValue = false ;
404+ let rawCachedValue = cache . get ( keyName ) ;
404405 let cachedValue ;
405- if ( cache [ keyName ] !== undefined ) {
406- if ( cache [ keyName ] !== UNDEFINED ) {
407- cachedValue = cache [ keyName ] ;
406+
407+ if ( rawCachedValue !== undefined ) {
408+ if ( rawCachedValue !== UNDEFINED ) {
409+ cachedValue = rawCachedValue ;
408410 }
409411 hadCachedValue = true ;
410412 }
@@ -419,17 +421,17 @@ ComputedPropertyPrototype._set = function computedPropertySet(obj, keyName, valu
419421 propertyWillChange ( obj , keyName ) ;
420422
421423 if ( hadCachedValue ) {
422- cache [ keyName ] = undefined ;
424+ cache . set ( keyName , undefined ) ;
423425 }
424426
425427 if ( ! hadCachedValue ) {
426428 addDependentKeys ( this , obj , keyName , meta ) ;
427429 }
428430
429431 if ( ret === undefined ) {
430- cache [ keyName ] = UNDEFINED ;
432+ cache . set ( keyName , UNDEFINED ) ;
431433 } else {
432- cache [ keyName ] = ret ;
434+ cache . set ( keyName , ret ) ;
433435 }
434436
435437 propertyDidChange ( obj , keyName ) ;
@@ -444,9 +446,9 @@ ComputedPropertyPrototype.teardown = function(obj, keyName) {
444446 }
445447 let meta = metaFor ( obj ) ;
446448 let cache = meta . readableCache ( ) ;
447- if ( cache && cache [ keyName ] !== undefined ) {
449+ if ( cache && cache . get ( keyName ) !== undefined ) {
448450 removeDependentKeys ( this , obj , keyName , meta ) ;
449- cache [ keyName ] = undefined ;
451+ cache . set ( keyName , undefined ) ;
450452 }
451453} ;
452454
@@ -569,7 +571,7 @@ export default function computed(func) {
569571function cacheFor ( obj , key ) {
570572 var meta = peekMeta ( obj ) ;
571573 var cache = meta && meta . source === obj && meta . readableCache ( ) ;
572- var ret = cache && cache [ key ] ;
574+ var ret = cache && cache . get ( key ) ;
573575
574576 if ( ret === UNDEFINED ) {
575577 return undefined ;
@@ -579,22 +581,22 @@ function cacheFor(obj, key) {
579581
580582cacheFor . set = function ( cache , key , value ) {
581583 if ( value === undefined ) {
582- cache [ key ] = UNDEFINED ;
584+ cache . set ( key , UNDEFINED ) ;
583585 } else {
584- cache [ key ] = value ;
586+ cache . set ( key , value ) ;
585587 }
586588} ;
587589
588590cacheFor . get = function ( cache , key ) {
589- var ret = cache [ key ] ;
591+ var ret = cache . get ( key ) ;
590592 if ( ret === UNDEFINED ) {
591593 return undefined ;
592594 }
593595 return ret ;
594596} ;
595597
596598cacheFor . remove = function ( cache , key ) {
597- cache [ key ] = undefined ;
599+ cache . set ( key , undefined ) ;
598600} ;
599601
600602export {
0 commit comments