Skip to content

Commit

Permalink
Access property only once during property get
Browse files Browse the repository at this point in the history
  • Loading branch information
Trent Willis committed Oct 15, 2015
1 parent ecbc94a commit e8b717d
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 4 deletions.
8 changes: 4 additions & 4 deletions packages/ember-metal/lib/property_get.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ export function get(obj, keyName) {
}

var meta = peekMeta(obj);
var possibleDesc = obj[keyName];
var desc = (possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor) ? possibleDesc : undefined;
var value = obj[keyName];
var desc = (value !== null && typeof value === 'object' && value.isDescriptor) ? value : undefined;
var ret;

if (desc === undefined && isPath(keyName)) {
Expand All @@ -76,10 +76,10 @@ export function get(obj, keyName) {
if (meta && meta.peekWatching(keyName) > 0) {
ret = meta.peekValues(keyName);
} else {
ret = obj[keyName];
ret = value;
}
} else {
ret = obj[keyName];
ret = value;
}

if (ret === undefined &&
Expand Down
11 changes: 11 additions & 0 deletions packages/ember-metal/tests/accessors/get_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,17 @@ QUnit.test('should get arbitrary properties on an object', function() {
}
});

QUnit.test('should not access a property more than once', function() {
var count = 0;
var obj = {
get id() { return ++count; }
};

get(obj, 'id');

equal(count, 1);
});

testBoth('should call unknownProperty on watched values if the value is undefined', function(get, set) {
var obj = {
count: 0,
Expand Down

0 comments on commit e8b717d

Please sign in to comment.