Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>
 
    function createView(obj, propList) {
        var proxy = {};     
        for (var propIndex in propList) {    
             var prop=propList[propIndex];
             Object.defineProperty(proxy, prop, 
                    {  enumerable : true , 
                       get : getter.bind(obj,prop), 
                       set : setter.bind(obj,prop)   } );
    
        }    
      return proxy;
    }
    function getter(prop) { return this[prop] ; }
    function setter(prop, value) { return this[prop] = value ; }
var myObj={
    p1:123,
    p2:321,
    p3:{p3_1:1231,p3_2:342},
    p4:'23423',
    p99:{p99_1:'sadf',p99_2:234},
    p100:3434
};
var objView = createView(myObj, ['p1', 'p2', 'p100']);
console.log('on objView, p1:' + objView.p1 + ' p2:' + objView.p2 + ' p100:' +objView.p100 + ' and p4 (not in view) is : ' + objView.p4 );
console.log('modifiying, on the view,  p1 to 1000 and p2 to hello ')
objView.p1 = 1000;
objView.p2 = 'hello';
console.log('on objView, p1:' + objView.p1 + ' p2:' + objView.p2 + ' p100:' +objView.p100 + ' and p4 (not in view) is : ' + objView.p4 );
console.log('modifiying, on the viewed object,  p1 to 200 and p2 to bye ')
myObj.p1 = 200;
myObj.p2 = 'bye';
console.log('on objView, p1:' + objView.p1 + ' p2:' + objView.p2 + ' p100:' +objView.p100 + ' and p4 (not in view) is : ' + objView.p4 );
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers