• js创建对象的高级模式


    hello,安瑞万。第一次写博客,心情很激动啊。要是说的不好,你来打我啊?反正你也不知道我家地址。好了,不扯了。进入正题:要是写的不好欢迎大家来批评指导。

    what:创建对象的三种模式

    --1,门户大开性 function Book(title){this.title = title} Book.prototype.dispaly = function(){console.log(this.title)} 缺点:无法对用户传入的值-title进行控制,如果你得程序需要对值进行严格控制,这样的模式明显就是问题了

    --2,通过getter,setter方法  --缺点:虽然程序实现了setTitle和getTitle两个方法,但是程序员可能由于有意无意对其进行设置,而忽略setTitle.这时候就不能进行限制了。具体大家可以参考设计模式中对于创建对象的讲解

    --3 创建对象的高级模式

    var Book = (function () {

    function check(val) {
    if (typeof(val) != "string") {
    return false;
    }
    else {
    return true;
    }
    }

    return function (title) {
    var title;
    this.getTitle = function () {
    return title
    }
    this.setTitle = function (newTitle) {
    if (!check(newTitle)) {
    throw new Error(newTitle + "is Invalid");
    }
    else {
    title = newTitle;
    }
    }
    this.setTitle(title);
    }
    })();
    其中里边的check()方法用来判断传入的title是否为字符串,在return返回的函数中定义局部变量title,保证外部不能直接操作这个值。只能通过setTitle方法进行操作。而获取只能通过getTitle方法进行操作,可以严格检测传入进来的title是否符合要求。
    作为一个前端小菜,写的东西肯定会有问题,希望大家多多包涵,欢迎留下您宝贵的意见。

      

  • 相关阅读:
    Weblogic 部署注意事项
    Can't load IA 32-bit .dll on a AMD 64-bit platform
    getDeclaredFields()和getFields()
    EJB QI查询
    Git for windows 中文乱码解决方案
    gulp browser-sync自动刷新插件
    input默认提示取消
    devDependencies和dependencies的区别
    npm安装插件提示
    gulp.watch监听文件
  • 原文地址:https://www.cnblogs.com/hjdjs/p/6245868.html
Copyright © 2020-2023  润新知