JQuery 是如何处理“Cannot set property xxx of undefined”的问题?”如果我有:
function Foo() {
Foo.fn = Foo.prototype;
}
然后我有一个带有这段代码的 JavaScript 扩展文件:
(function(foo) {
foo.fn.myPlugin = function() {
//return something here
};
})(Foo);
我收到一条错误消息“无法设置未定义的属性 myPlugin”。有趣的是,如果我只是将插件代码复制到 FireBug 或 Chrome 中并在控制台中执行它,它可以正常工作并按预期方式附加和工作,如下所示:
foo.myPlugin();
我猜我的问题要么来自于浏览器加载文档的时间,要么是我现有的对象不在它自己的命名空间内。我想知道这是否仅在您使用 var 语法定义类时才有效?
我不知道......据我了解......两者都应该有效。
最佳答案
function Baz() {
return this;
}
Baz.prototype.fn = Baz.prototype;
var Foo = new Baz();
Baz = null;
(function(Bar) {
Bar.fn.myPlugin = function() {
return "test";
};
})(Foo);
Foo.myPlugin(); //returns test
这有效,并使 Baz 可分配。不确定 jQuery 是否就是这样做的。
关于javascript - jQuery 是如何工作的 : I get "Cannot set property xxx of undefined" when trying a similar prototype thing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5573090/