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

  

js创建对象的高级模式的更多相关文章

  1. JS创建对象的七大模式

    1. 工厂模式 function createPerson(name, age, job){var o = new Object();o.name = name;o.age = age;o.job = ...

  2. JS创建对象之原型模式

    一.原型对象 只要创建了一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象:在默认情况下,所有原型对象都会 自动获得一个constructor(构造函 ...

  3. JS创建对象之构造函数模式

    function Person(name, age, job) { this.name = name; this.age = age; this.job = job; this.sayName = f ...

  4. JS创建对象之工厂模式

    function createPerson(name, age, job) { var o = new Object(); o.name = name; o.age = age; o.job = jo ...

  5. javascript(js)创建对象的模式与继承的几种方式

    1.js创建对象的几种方式 工厂模式 为什么会产生工厂模式,原因是使用同一个接口创建很多对象,会产生大量的重复代码,为了解决这个问题,产生了工厂模式. function createPerson(na ...

  6. js创建对象的三种方式和js工厂模式创建对象

    文章地址: https://www.cnblogs.com/sandraryan/ 创建对象 创建对象的三种方式 构造函数 ,是一种特殊的方法.主要用来在创建对象时初始化对象 1. 调用系统的构造函数 ...

  7. 面向对象的程序设计之JS创建对象的9种模式及其优缺点

    目录 1.new Object () 2.字面式创建对象 3.工厂模式 4.构造函数模式 4.1.将构造函数当作函数 4.2.构造函数的问题 5.原型模式 5.1.理解原型对象 5.2.原型与in操作 ...

  8. JS创建对象的方式有几种

    相信但凡作为一个前端工程师,都被面试到过这个面试题目,HR考察的就是对oop思想的理解. 作为一个从后端转过来的怂逼,oop一直是心中的永远的痛啊. 这几天一直在通读js高级程序设计,重复理解js创建 ...

  9. js 创建对象的多种方式

    参考: javascript 高级程序设计第三版 工厂模式 12345678910 function (name) { var obj = new Object() obj.name = name o ...

随机推荐

  1. Java基础加强之多线程篇(线程创建与终止、互斥、通信、本地变量)

    线程创建与终止 线程创建 Thread类与Runnable接口的关系 public interface Runnable { public abstract void run(); } public ...

  2. Navicat备份远程Oracle数据库到本地

    公司的数据库是本地的,我只能在公司连,回家就不能跑项目了,一跑就报SQLException,所以希望可以把数据库复制到我的本地来. 因为一直在用Navicat操作数据库,这里就分享一下用Navicat ...

  3. web 前端- 表格字段(文件大小)单位格式化算法

                     if (value === 0) return '0 B';   var k = 1024, // or 1000   sizes = ['B', 'KB', 'MB ...

  4. iOS Start developing ios apps (OC) pdf

    这是苹果官方最后一次更新的基于OC的iOS开发基础教程, 如果英文的看不懂,还有中文的版本哦. 点击下面的链接 好东西,分享给大家! 如果确实有帮到你,麻烦star一下我的github吧!

  5. 学习CSS3动画(animation)

    CSS3就是出了不少高大上的功能,3D效果.动画.多列等等.今天写篇文章记录怎么一下怎么用CSS3写一个动画. 丑话还得说前头,IE9以及以下版本不支持CSS3动画(如真要实现可以考虑用js,不过估计 ...

  6. 浅说如何制作javascript类库

    理论 对于静态的类来说,JavaScript 对象直接量就已经够用了,但使用继承和实例来创建经典的类往往更有帮助. JavaScript 是基于原型的编程语言,并没有包含内置类的实现. 但通过Java ...

  7. 弱省互测#0 t2

    题意 给定两个字符串 A 和 B,求下面四个问题的答案: 1.在 A 的子串中,不是 B 的子串的字符串的数量. 2.在 A 的子串中,不是 B 的子序列的字符串的数量. 3.在 A 的子序列中,不是 ...

  8. nginx的日常应用

    nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes ; 工作进程:数目. ...

  9. paramiko模块的安装

    1.找到自己python安装的目录(默认路径:C:\Users\zhangliyuan\AppData\Local\Programs\Python\Python35) 注:cmd中所有命令 2.进入S ...

  10. Java技术体系图

    Java程序员高级特性              反射.泛型.注释符.自动装箱和拆箱.枚举类.可变              参数.可变返回类型.增强循环.静态导入        核心编程       ...