博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(安全)工厂方法模式
阅读量:4653 次
发布时间:2019-06-09

本文共 1477 字,大约阅读时间需要 4 分钟。

示例一:

var Demo = function () { };        Demo.prototype = {            show: function () {                alert('show');            }        }        var d = new Demo();        d.show();//执行成功        var d = Demo();        d.show();//执行失败

上面执行失败的原因:

    在构造函数开始执行时,先判断当前对象this指代是不是当前类(Demo),如果是则通过new关键字创建对象,如果不是,则说明this指向的是window,

    而window对象中并没有show函数,所以调用失败!

解决方法:

    在当this指向window对象的时候,再重新返回新创建的对象。示例如下:

var Demo = function () {            if(!(this instanceof Demo)){                return new Demo();            }        }

示例二:安全的工厂方法

//安全模式创建的工厂类        var Factory = function (type, content) {            if (this instanceof Factory) {                alert('ok');                return new this[type](content);            } else {                alert('no');                return new Factory(type,content);            }        }        //工厂原型中设置创建所有类型数据对象的基类        Factory.prototype = {            Java: function (content) {                alert('i am ' + content);            },            JS: function (content) {                alert('i am ' + content);            },            PHP: function (content) {                alert('i am ' + content);            }        };        var data = [            {type:"JS",content:"JJS"},            {type:"PHP",content:"PHPP"},            {type:"Java",content:"JAVA"}        ];        for (var i = 0; i < data.length; i++) {            Factory(data[i].type,data[i].content);        }

 

转载于:https://www.cnblogs.com/bsyblog/p/6773379.html

你可能感兴趣的文章
Spring表达式语言SpEL简单介绍
查看>>
富文本编辑期Quill
查看>>
62.COUNT(递归算法)--数的划分变式题型
查看>>
Android系统中自定义按键的短按、双击、长按事件
查看>>
移动开发网站导航
查看>>
NancyFX 第八章 内容协商
查看>>
第三次作业
查看>>
Java实现Restful框架Jersey学习
查看>>
IP地址分类
查看>>
如何比较两个时间字符串的大小
查看>>
uva 10881 Piotr's Ants 解题报告
查看>>
Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码
查看>>
java 多线程
查看>>
操蛋的一天
查看>>
20172324 2017-2018-2 《程序设计与数据结构》第八周学习总结
查看>>
esp8266烧写机智云固件方法
查看>>
Dao层设计
查看>>
css各种姿势的水平居中
查看>>
MYSQL 测试常用语句使用技巧
查看>>
基础细节知识
查看>>