JavaScript对象私有参数
如何创建这样的对象。JavaScript对象私有参数,javascript,private,javascript-objects,Javascript,Private,Javascript Objects,如何创建这样的对象。 设置名称后,对象应具有名称,因此无法修改 var movies = { genre:"Horror"; } movies.genre= "Pop" I dont want to change my genre value 您可以尝试使用with descriptor选项和writable属性: var o = {}; // Creates a new object Object.defineProperty(o, "a", { value : 37,
设置名称后,对象应具有名称,因此无法修改
var movies = {
genre:"Horror";
}
movies.genre= "Pop" I dont want to change my genre value
您可以尝试使用with descriptor选项和writable属性:
var o = {}; // Creates a new object
Object.defineProperty(o, "a", { value : 37,
writable : false });
console.log(o.a); // logs 37
o.a = 25; // No error thrown (it would throw in strict mode, even if the value had been the same)
console.log(o.a); // logs 37. The assignment didn't work.
实际上,您可以更改对象的属性 我在研究后发现了这个,根据你的需要修改它
var data = { };
Object.defineProperty(data, 'secret', {
value: 42,
writable : false,
enumerable : true,
configurable : false
});
从客户的回答来看:
这样,我们在数据中创建了一个值为42
的属性机密,它既不能修改也不能删除
这里需要注意的是,genius(就像你所说的)也能够发现这段代码并修改它,如果他愿意的话,再次能够更改内容。您无法以这种方式创建安全的前端JavaScript。代码将始终以纯文本形式提供给每个人
来源:以下方法应适用于所有浏览器,包括旧浏览器 您可以使用闭包和立即调用函数(IIFE)来实现私有属性。下面是一个示例代码。这里,初始值作为参数传递给IIFE。IIFE使用init值初始化私有属性,然后返回一个包含私有属性的访问器函数的对象。因为返回的对象没有直接的私有属性,所以不能修改它,但是可以通过闭包访问它
var objWithPrivateProp = (function(initValue){
var privateProp = initValue;
return {
getPrivateProp: function () {
return privateProp;
}
};
})("Horror");
请记住,此技术仅适用于ECMAScript 5浏览器。如果您需要支持IE8,它将不起作用。