晓风伴月 2016-05-03 01:34 采纳率: 0%
浏览 821

关于《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条回答 默认 最新

  • lambda-fk 2016-05-09 10:26
    关注

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

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

    评论

报告相同问题?

悬赏问题

  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元