问题描述
- 关于《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方法内部时,也可以手动进行修改,这还算安全么?
解决方案
这就是函数的构造器模式而已。
只是保证了使用 var o = new Person()构造出的对象里面的属性被保护起来。和java的private的限制很相似
但是java即使是private修饰的使用反射也可以进行修改。
这里也一样,没有绝对的安全。都是相对的。
你在这个Person方法内部当然可以进行篡改了。
至少创造出来的对象你是该不了的。
时间: 2024-10-28 16:48:16