2 q1003675852 q1003675852 于 2016.05.03 09:34 提问

关于《javascript 高级程序设计》里“稳妥构造函数模式“的一点疑问

在《javascript 高级程序设计》第六章6.2.7提到“稳妥构造函数模式”的稳妥对象,指的是没有公共属性,而且其方法也不引用this 的对象,最适合在一些安全的环境中(这些环境中会禁止使用this 和new),或者在防止数据被其他应用程序(如Mashup程序)改动时使用。书中举例如下:

    function Person(name, age, job){
        //创建要返回的对象
        var o = new Object();
        //可以在这里定义私有变量和函数
        //添加方法
        o.sayName = function(){
            alert(name);
        };
        //返回对象
        return o;
    }

在以这种模式创建的对象中,除了使用sayName()方法之外,没有其他办法访问name 的值。但是如果打开浏览器的断点调试,在执行到Person方法内部时,也可以手动进行修改,这还算安全么?

1个回答

fk002008
fk002008   2016.05.09 18:26

这就是函数的构造器模式而已。
只是保证了使用 var o = new Person()构造出的对象里面的属性被保护起来。和java的private的限制很相似
但是java即使是private修饰的使用反射也可以进行修改。

这里也一样,没有绝对的安全。都是相对的。
你在这个Person方法内部当然可以进行篡改了。
至少创造出来的对象你是该不了的。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!