繁体   English   中英

我可以在javascript中拥有与类同名的对象吗?

[英]Can I have object with the same name as class in javascript?

我可以在javascript中拥有与类同名的对象吗?

javascript 本身没有类,只有构建对象的方法。

更新:ES6,也称为 ECMAScript2015,引入了类。

直接回答你的问题,是和否。 您可以创建一个函数来构建您的对象,但是一旦您有一个同名的变量,该函数就会被销毁。

之间没有区别

function bob() {
    //code goes here
    this.name = "bob";
}

var bob = function() {
    //code goes here
    this.name = "bob";
}

如果你声明了一个名为 bob 的变量,那么会发生什么:

var bob = new bob();

在这种情况下,函数 bob 将被调用,对象被创建,函数 bob 被新变量 bob 破坏。


如果你想创建一个单例,那么你不妨使用一个闭包,如下所示:

var bob = new (function() {
    //code goes here
    this.name = "bob";
})();

jQuery 怎么样: $('string') ,据我所知是一个函数,以及$.ajax ,一个具有名为 ajax 的方法的类。

名为$函数和名为$类。 我知道我错了,但这就是它的样子。

您可以对类和变量使用相同的名称,是的。 但是以大写字母开头类并保持变量名小写。 (因此是一个类 Bob 和变量 bob。)

Javascript 区分大小写,所以它知道区别。 对你来说,两者读起来都是一样的。

对于这种情况,您应该使您的全局函数和特定函数名称的其他选项如下所示:

var write = function(text) { console.log(text); }
write.hi = ()=>console.log("hi");
write.bye = ()=>console.log("bye");
write.word = (text)=>console.log(text);
write.feature = "Its a feature";
//...

write("baby");//'hello' printed
write.hi();//'hi' printed
write.bye();//'bye' printed
//...

享受...

我的回答是假设牢记最佳实践。 通常 JavaScript 中的对象被定义为const 在这种情况下,具有与类名相同的对象名将导致错误。

如果对象未定义为const ,则新对象将覆盖该类。

无论哪种方式,尝试这样的事情的结果都不好,所以应该避免这种做法,并尝试为类和对象保留不同的名称。

但如果有特殊情况,您可以尝试使用TitleCasing更改 Class 名称,使用camelCasing或任何其他变体更改对象名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM