gpt4 book ai didi

javascript - 了解 Unslider.js 中 new 关键字的使用

转载 作者:行者123 更新时间:2023-11-28 00:37:51 25 4
gpt4 key购买 nike

我很难理解在 jQuery 插件中找到的语法。下面是语法:

instance = (new Unslider).init(me, o);

在上面的行中,init 当然是一个函数,其中 me 是 = $(this)o 是一个对象文字,在调用插件时传递。现在为了理解上面的内容,我继续阅读了几篇我不确定是否相关的文章。

我在这里读到一篇不错的文章:simple class instantiating但我的困惑仍然存在。

如果我将我遇到困难的那句话翻译成简单的英语:

我会这样读:

使实例成为 unslider 的新实例,然后使用参数 (o,me) 运行 init 函数。

但是如果我的上述解释是正确的,

instance = (new Unslider).init(me, o);

应该重写为

instance = new Unslider;
init(me, o);

回到我的问题,什么是:

instance = (new Unslider).init(me, o);

在做什么?

附注如果您能给我指出任何可以让我很好地理解这种语法的资源,我也将不胜感激。

最佳答案

make instance a new instanse of unslider and than run the function init with the parameters (o,me).

你是对的。

它也可以像下面的代码一样重写:

new Unslider().init(me, o);

括号是对表达式结果进行分组的运算符。例如,您还可以执行以下操作:

var result = (1 + 2).toString();

alert(result);

12相加得到的值以number的形式返回,可以调用toString() 因为此函数是 JavaScript 中任何对象的一部分。

(new Unslider) 也是同样的情况:括号的值是从 Unslider 原型(prototype)创建的对象,因此您可以调用实例成员(即函数,整个对象的属性...)。

为什么他们决定使用这种语法,而不仅仅是 new Unslider().init(me, o),谁知道呢。恕我直言,我会使用我的选项,因为实例化一个对象并且不需要括号语法......

附加说明...

您应该知道您将无法这样做:

// This would be using the result of .init(me, o) as the 
// constructor function, and I'm very sure .init(me, o) won't
// return a function, so this would end in a run-time error
new Unslider.init(me, o);

综上所述,new关键字应该与函数一起使用,当函数用在new表达式中时,所谓的函数就变成了构造函数

您可能会了解有关构造函数和原型(prototype)的更多信息 here .

关于javascript - 了解 Unslider.js 中 new 关键字的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28294537/

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