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

      

  • 相关阅读:
    移动及pc端实现签名功能
    中文字符长度与英文字符长度的计算
    IE8部分兼容问题及解决方法
    如何本地搭建手机可访问的web网页
    MYSQL索引的作用和创建
    HTTP协议
    data.json
    axios
    axios基本用法
    Component 初识组件
  • 原文地址:https://www.cnblogs.com/hjdjs/p/6245868.html
Copyright © 2011-2022 走看看