闭包面试题

var o = (function (){
	var obj = {
		a:1,
		b:2,
	};
	return {
		get: function(k) {
			return obj[k];
		},
	};
})();
// 如何在不改变上面代码的情况下,修改obj对象
Object.defineProperty(Object.prototype,'abc',{
	get(){
		return this;
	},
});
var obj1 = o.get('abc');
obj1.c = 2;
obj1.a = 13123;

console.log(o.get('a'));
-------------------------------如何防止被修改-------------------------------
var o = (function (){
	var obj = {
		a:1,
		b:2,
	};
	return {
		get: function(k) {
		// 对比原对象
		if(obj.hasOwnProperty(k)){
				return obj[k];
			}
			return undefined;
		},
	};
})();

你可能感兴趣的:(javascript,开发语言,ecmascript)