具有相同属性(名称)的不同javascript对象

时间:2015-10-07 10:38:14

标签: javascript class oop resharper

即使没有"真实" javascript中的对象我在如何使它们彼此区分方面苦苦挣扎。

例如,我有两个对象AppleOrange定义如下:

function Apple(){
    this.name = "Apple";
}

function Orange(){
    this.name = "Orange";
}

OOP的角度来看,两个name属性没有连接,因为它们是不同类的属性。

我的问题/问题是,当重命名class Apple的name属性时,ReSharper还会要求我重命名Orange类的属性。 同时按下F12(GOTO DEFINITION)将显示两个属性。

但为什么呢?它们是否在全球范围内定义?我如何区分它们,以便橙色和苹果是真正不同的对象?

1 个答案:

答案 0 :(得分:0)

ReSharper无法提前知道您将如何使用您的功能" Apple"和" Orange"。这就是为什么它会搜索某些符号的所有可能动态用法的原因。让我们考虑以下示例:



function Apple(){
    this.name = "Apple";
}

function Orange(){
    this.name = "Orange";
}

var x = {name: "Tomato" };

Apple.call(x);

alert(x.name);

Orange.call(x);

alert(x.name);




如果您重命名其中一个名为' name'对于不同的东西,但保留其他名称' name',您的代码将被破坏。因此,重命名所有这些都是有意义的。

这就是ReSharper在这种情况下列出所有三种用法的原因,并且由您自己决定,根据您的代码的确切语义,重命名哪些以及哪些将作为是