gpt4 book ai didi

javascript - 理解 New 与 JavaScript 作用域函数并传递 $

转载 作者:行者123 更新时间:2023-11-28 13:47:51 24 4
gpt4 key购买 nike

好吧,在 JavaScript 作用域函数和模块模式方面,我确实学到了很多东西,非常棒的东西!现在我正在教自己将 jQuery 传递到作用域函数中,这样加载速度更快,如果由于某种原因我有另一个使用 $ 的框架,那么就不会造成困惑。

但我不完全理解的是,当我想传入 jQuery 时,何时“在范围函数的上下文中”创建"new"实例。这就是我的意思...如果我要使用以下内容作为基础,它将返回 pubs,它可以与函数或属性等相关联,我明白了。

var DemoA = (function($) {
var pubs = {};
pubs.dosomething = //some function that calculates cool stuff with help of jquery
return pubs;
})(jQuery);

现在当我尝试创建一个新实例时......

var stuff = new DemoA();

...我通过 Google Chrome 开发者工具收到错误。它说“对象不是函数”或类似的东西。但如果我像这样直接调用 DemoA...

DemoA.dosomething();

...然后一切正常。这里发生了什么?为什么我不能创建新的实例变量?

预先感谢您帮助我变得更聪明!

最佳答案

查看您的return 语句。您将返回一个如下所示的对象:

{"dosomething": function () { }}

您无法创建对象的新实例。您可以直接调用 dosomething,因为它是返回对象的直接属性(方法)。

我想你想要这样的东西:

http://jsfiddle.net/veJqg/

var DemoA = (function($) {
var pubs = function () {
this.dosomething = function () {
console.log("just executed `dosomething`");
};
};
return pubs;
})(jQuery);

var a = new DemoA();
a.dosomething();

这样,您仍然将 jQuery 对象别名为 $,并且返回一个可以按以下方式使用的 function你想要的。

关于javascript - 理解 New 与 JavaScript 作用域函数并传递 $,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12964813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com