gpt4 book ai didi

javascript - 如何在维护命名空间的同时创建类似 jQuery 的方法链?

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

我查看了 SO 上回答类似问题的各种答案,但没有一个真正回答了我正在寻找的内容。示例如下:

jQuery prototype and constructor function chaining

How does basic object/function chaining work in javascript?

我希望能够链接函数中的方法,同时也将该函数用作命名空间。您可以将 jquery 对象用作函数,如下所示:

$('selector');

但您也可以直接从 $ 变量访问方法,如下所示:

$.ajax(

这是如何实现的?我尝试过查看 jquery 源代码,但几乎不可能遵循。

最佳答案

在 Javascript 中,函数是一等对象。特别是,它们是对象。

var greet = function(name) {console.log("Hello, " + name + "!"); };
greet.lang = "English";

合法。那么以下都是有效的:

greet("Alice"); // prints Hello, Alice!
console.log(greet.lang); // prints English

我认为调用 $(...) 构造函数并不准确。在 Javascript 中,构造函数和函数之间的界限是模糊的,但通常我会说构造函数与 new 一起使用,并且按照惯例,以大写字母开头。 $ 只是一个对象,特别是一个函数,因此可以被调用,并且具有可以访问的其他属性。

我也不会调用$,或者在我的示例中greet,命名空间。您可能会想到 Java 中的包语法,其中 com.mycompany.util.StringFunctions 将具有包/命名空间 com.mycompany.util,或者在 C++ 中,这可能写为MyCompany::Util::StringFunctions。 Javascript 并不完全有这个概念,但在或多或少的任何 OO 语言中,它都可以用对象来模拟,如上所述。我想说 $ 只是感觉就像它是一个命名空间,因为它是一个相当大的库,但它是一个巨大的库,它被实现为一个对象,也是一个函数,有许多属性。

关于javascript - 如何在维护命名空间的同时创建类似 jQuery 的方法链?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25534335/

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