如何在localstorage中保存任何对象的私有属性

问题描述 投票:-2回答:3

当你尝试对任何对象进行字符串化时,你只会得到一个json的公共属性,但是,如果我的对象有私有属性,我怎么能保存它?

javascript local-storage
3个回答
3
投票

下面是一个使用Person对象的构造函数的示例。在这种情况下,我们覆盖此对象的toJSON方法以包含私有变量“age”。 toJSON方法由JSON.stringify在内部使用

function Person(name, age) {
    var age = age  // Only accessible in the scope on the constructor
    this.name = name

    this.toJSON = function() {
        return {age: age, name: this.name}
    }
}

// eg with localStorage
var john = new Person('John', 40)
localStorage.setItem('John', JSON.stringify(john))

我必须添加以前评论过javascript中没有私有属性这样的东西:只有scoped变量和闭包作为getter / setter才能让它们被外部访问


2
投票

目前,在Javascript对象上没有private成员(属性,方法)这样的东西。 ECMAScript proposal将私有字段带入未来版本的Javascript。但是,这些私有字段将在对象范围内严格访问。从对象的范围之外访问它们是不可能的,甚至不可能知道它们的存在。

如果要定义自己的对象,请创建toJSON()方法并根据需要返回对象的字符串表示形式。


-1
投票

所有javaScript属性都是公共的;本地存储存储密钥:值对只能由存储它们的域检索,即如果启用了cookie!这听起来像是你想要找到一种在“客户端”脚本语言上持久存储数据的方法的问题,答案是不保证在没有其他技术的客户端机器上存在持久数据,以保证系统安全;访问客户端计算机的存储系统受到严格限制。本地存储只能存储受拥有它的浏览器和操作系统限制的有限数量的数据。

© www.soinside.com 2019 - 2024. All rights reserved.