zoukankan      html  css  js  c++  java
  • 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是否符合要求。
    作为一个前端小菜,写的东西肯定会有问题,希望大家多多包涵,欢迎留下您宝贵的意见。

      

  • 相关阅读:
    Sublime Text 3专题
    00.PHP学习建议
    php面试题及答案收藏(转)
    (转)如何快速掌握一门技术
    最全的MySQL基础【燕十八传世】
    UEditor编辑器并不难
    学习一门语言难在什么地方?
    PHP中关于位运算符 与 或 异或 取反
    WebP是什么图片格式?你了解PNG、JPG、WebP和GIF的区别吗?
    Mysql 外键设置
  • 原文地址:https://www.cnblogs.com/hjdjs/p/6245868.html
Copyright © 2011-2022 走看看