gpt4 book ai didi

javascript - 在 Javascript 中使用对象和函数命名空间有什么区别?

转载 作者:行者123 更新时间:2023-12-03 02:07:29 24 4
gpt4 key购买 nike

我在 JavaScript 中看到了这两种基本的命名空间方式。

  1. 使用对象:

    var 命名空间 = { };

    Namespace.Class1 = function() { ... };

  2. 使用函数:

    函数命名空间() { };

    Namespace.Class1 = function() { ... };

它们有何不同?谢谢。

最佳答案

正如其他人所指出的,函数是一个对象,因此这两种形式可以互换。附带说明一下,jQuery 使用函数作为命名空间的方法来支持调用和命名空间(如果您想知道还有谁会这样做或为什么这样做)。

但是,使用函数即命名空间方法时,存在不应触及或不可变的保留属性:

function Namespace(){}

Namespace.name = "foo"; // does nothing, "name" is immutable
Namespace.length = 3; // does nothing, "length" is immutable
Namespace.caller = "me"; // does nothing, "caller" is immutable

Namespace.call = "1-800-555-5555" // prob not a good idea, because...

// some user of your library tries to invoke the
// standard "call()" method available on functions...
Namespace.call(this, arg); // Boom, TypeError

这些属性与Object不相交,因此对象即命名空间方法不会有这些行为。

关于javascript - 在 Javascript 中使用对象和函数命名空间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4125479/

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