我修改了之前遇到问题的代码,修复了所有错误,并在不同的“lint”网站上多次检查。 为了确保代码在Jsfiddle中运行,我点击了JShint并被告知所有都是有效的,但是,当我单击按钮时,它不会运行。 用于创建链接的示例代码:
(function (g) { "use strict"; //g = game
g = this[g] = function () {
var answer;
//pre game
answer = prompt(g.msg[0]); //instruction prompt asks if youve played game
if (answer === 'no') {
等等
http://jsfiddle.net/ShiiFtyyMendoza/NsVvU/12/
答案 0 :(得分:0)
我在jsFiddle上尝试运行时在控制台中看到的错误是:Uncaught TypeError:无法设置未定义的属性'zork_clone'。
字符串'zork_clone'仅存在于代码中的两个位置;在第95行执行的函数名称,以及在第92行传入模块的字符串。
跟踪该参数,我们看到从第2行抛出的错误:g = this[g] = function () {
,它告诉我在执行该代码时未定义this
。
我认为在你的情况下this
是未定义的,因为你是在'自执行匿名函数'的范围内执行而不是使用new
关键字声明的对象。
答案 1 :(得分:0)
我可以在页面中看到两个问题
onload事件问题
您的小提琴脚本设置为在onload事件之后执行,而在您的脚本中您再次注册另一个onload处理程序
要修复,请在第二个选择字段{@ 1}}下的小提琴的左侧面板中选择Frameworks & Extensions
匿名功能问题
根据我的理解,您正在尝试在全局范围内(即No Wrap - in <body>
)创建一个具有变量名称的函数(在本例中为名称为zork_clone
的函数)。但是你在内部函数中使用window
模式。您所需要的是strict
指向this
对象,如果您没有使用window
模式,这是正常情况,这会在strict
模式中发生变化。您可以find here在严格模式下strict
必须明确,否则它将具有值this
,这是您案例中发生的事情。
修复是使用undefined
全局变量,而不是在匿名函数中使用window
。
演示:Fiddle