@@ -926,7 +926,7 @@ ASTCompiler.prototype = {
926
926
self . if ( self . stage === 'inputs' || 's' , function ( ) {
927
927
if ( create && create !== 1 ) {
928
928
self . if (
929
- self . not ( self . getHasOwnProperty ( 's' , ast . name ) ) ,
929
+ self . not ( self . nonComputedMember ( 's' , ast . name ) ) ,
930
930
self . lazyAssign ( self . nonComputedMember ( 's' , ast . name ) , '{}' ) ) ;
931
931
}
932
932
self . assign ( intoId , self . nonComputedMember ( 's' , ast . name ) ) ;
@@ -948,7 +948,7 @@ ASTCompiler.prototype = {
948
948
self . recurse ( ast . property , right ) ;
949
949
self . addEnsureSafeMemberName ( right ) ;
950
950
if ( create && create !== 1 ) {
951
- self . if ( self . not ( right + ' in ' + left ) , self . lazyAssign ( self . computedMember ( left , right ) , '{}' ) ) ;
951
+ self . if ( self . not ( self . computedMember ( left , right ) ) , self . lazyAssign ( self . computedMember ( left , right ) , '{}' ) ) ;
952
952
}
953
953
expression = self . ensureSafeObject ( self . computedMember ( left , right ) ) ;
954
954
self . assign ( intoId , expression ) ;
@@ -959,7 +959,7 @@ ASTCompiler.prototype = {
959
959
} else {
960
960
ensureSafeMemberName ( ast . property . name ) ;
961
961
if ( create && create !== 1 ) {
962
- self . if ( self . not ( self . escape ( ast . property . name ) + ' in ' + left ) , self . lazyAssign ( self . nonComputedMember ( left , ast . property . name ) , '{}' ) ) ;
962
+ self . if ( self . not ( self . nonComputedMember ( left , ast . property . name ) ) , self . lazyAssign ( self . nonComputedMember ( left , ast . property . name ) , '{}' ) ) ;
963
963
}
964
964
expression = self . nonComputedMember ( left , ast . property . name ) ;
965
965
if ( self . state . expensiveChecks || isPossiblyDangerousMemberName ( ast . property . name ) ) {
@@ -1515,7 +1515,7 @@ ASTInterpreter.prototype = {
1515
1515
identifier : function ( name , expensiveChecks , context , create , expression ) {
1516
1516
return function ( scope , locals , assign , inputs ) {
1517
1517
var base = locals && ( name in locals ) ? locals : scope ;
1518
- if ( create && create !== 1 && base && ! ( name in base ) ) {
1518
+ if ( create && create !== 1 && base && ! ( base [ name ] ) ) {
1519
1519
base [ name ] = { } ;
1520
1520
}
1521
1521
var value = base ? base [ name ] : undefined ;
@@ -1537,7 +1537,7 @@ ASTInterpreter.prototype = {
1537
1537
if ( lhs != null ) {
1538
1538
rhs = right ( scope , locals , assign , inputs ) ;
1539
1539
ensureSafeMemberName ( rhs , expression ) ;
1540
- if ( create && create !== 1 && lhs && ! ( rhs in lhs ) ) {
1540
+ if ( create && create !== 1 && lhs && ! ( lhs [ rhs ] ) ) {
1541
1541
lhs [ rhs ] = { } ;
1542
1542
}
1543
1543
value = lhs [ rhs ] ;
@@ -1553,7 +1553,7 @@ ASTInterpreter.prototype = {
1553
1553
nonComputedMember : function ( left , right , expensiveChecks , context , create , expression ) {
1554
1554
return function ( scope , locals , assign , inputs ) {
1555
1555
var lhs = left ( scope , locals , assign , inputs ) ;
1556
- if ( create && create !== 1 && lhs && ! ( right in lhs ) ) {
1556
+ if ( create && create !== 1 && lhs && ! ( lhs [ right ] ) ) {
1557
1557
lhs [ right ] = { } ;
1558
1558
}
1559
1559
var value = lhs != null ? lhs [ right ] : undefined ;
0 commit comments