Javascript策略设计模式问题
Javascript Strategy Design Pattern issue
我遵循策略设计模式的要点。https://gist.github.com/Integralist/5736427
我在几个月前实现了这个,chrome扩展在我实现它时没有抛出任何错误,但现在它抛出了
"未捕获类型错误:this.strategy不是函数"
var MessageHandling = function(strategy) {
this.strategy = strategy;
};
MessageHandling.prototype.greet = function() {
return this.strategy();
};
这很奇怪,因为依赖于此代码的函数仍然运行,但其他不依赖于它的代码是有限的。
有什么解决办法吗?
这主要是关于您从MessageHandling创建的对象,如果您在创建对象时传递了正确的函数,它应该始终有效。
var MessageHandling = function(strategy) {
this.strategy = strategy;
};
MessageHandling.prototype.greet = function() {
return this.strategy();
};
var m = new MessageHandling(function(){console.log('hello');});
m.greet();
上面的代码总是有效的,但如果您通过传递一个不是函数的参数或根本不传递参数来实例化MessageHandling,那么它会抱怨this.strategy不是函数。因此,您需要确保在创建MessageHandling的对象时将正确的函数传递给它。
您需要在此处发布完整的代码,以便有人解决问题。但从异常文本来看,似乎是在向构造函数传递未定义的策略或"不是函数的变量"。以下示例将给出相同的"Uncaught TypeError: this.strategy is not a function
异常:
// This is the Greeter constructor.
var Greeter = function(strategy) {
this.strategy = strategy;
};
// Greeter provides a greet function that is going to
// greet people using the Strategy passed to the constructor.
Greeter.prototype.greet = function() {
return this.strategy();
};
// Here are a couple of Strategies to use with our Greeter.
var politeGreetingStrategy = function() {
console.log("Hello.");
};
var friendlyGreetingStrategy = function() {
console.log("Hey!");
};
var boredGreetingStrategy = function() {
console.log("sup.");
};
var undefinedStrategy; //Not a function variable
// Let's use these strategies!
var politeGreeter = new Greeter(politeGreetingStrategy);
var friendlyGreeter = new Greeter(friendlyGreetingStrategy);
var boredGreeter = new Greeter(boredGreetingStrategy);
var wrongGreeter = new Greeter(undefinedStrategy); //No such strategy defined
politeGreeter.greet(); //=> Hello.
friendlyGreeter.greet(); //=> Hey!
boredGreeter.greet(); //=> sup.
wrongGreeter.greet(); //-> uncaught type
相关文章:
- 用于操纵DOM API的Javascript设计模式
- 用于多个选项卡和模块化的knockoutjs设计模式
- 自动化设计模式c++
- jQuery自动完成标记新的标签设计模式
- 有没有一种方法可以在设计模式下将ng模型或工厂绑定到iframe
- Javascript MVVM 设计模式 - 如何跟踪脏状态以及谁应该做 Ajaxing
- 包含 2 个或更多对象的页面上的 JavaScript 设计模式
- 在 Node 中.js释放 zalgo 的设计模式为什么异步路径是一致的
- Django设计模式-在加载时填充客户端JavaScript变量的方法
- Javascript策略设计模式问题
- 用于处理带有promise的外部接口中的参数的设计模式
- angularjs设计模式和从服务器获取数据的最佳实践
- JavaScript设计模式的建议
- 这种设计模式什么时候才能打破
- JavaScript设计模式,一个函数正在被覆盖
- BIRT报告在设计模式下导出到XLSX,但在运行时不导出
- 通量/反应设计模式
- 它是什么样的Javascript设计模式/方法
- 火狐浏览器 iframe 设计模式不起作用
- iframe关于光标移动问题的设计模式