如何在vscode中反映js对象的属性

时间:2019-07-23 03:42:58

标签: javascript visual-studio-code refactoring

我使用vscode的Refactor函数来重命名变量名。我发现全局变量或局部变量的智能修改没有问题,但是对象的属性无效。是否有任何方法或扩展程序可以做到这一点?

Vscode信息: 版本:1.36.1(用户设置) 提交:2213894ea0415ee8c85c5eea0d0ff81ecc191529 日期:2019-07-08T22:59:35.033Z 电子:4.2.5 铬:69.0.3497.128 Node.js:10.11.0 V8:6.9.427.31-electron.0 操作系统:Windows_NT x64 10.0.18922

g = se.prototype;
g.eb = function (a) {
    this.pf = this.Sr(); //this.Sr will be refactored
    a = this.cu(a);
    return Pc(a, null)
};
g.au = function (a) {
    this.pf && "*" == this.Me && (a.id = this.pf)
};
g.Tt = function (a) {
    if (!this.zi)
        return a;
    a = de("<div>" + a + "</div>");
    he(a);
    return a.innerHTML
};
g.Sr = function () { //want to smart rename the g.Sr to g.sanitizer
    var a = !("STYLE" in this.Pe) && "STYLE" in this.Qe;
    return "*" == this.Me && a ? "sanitizer-" + (Math.floor(2147483648 * Math.random()).toString(36) + Math.abs(Math.floor(2147483648 * Math.random()) ^ Ja()).toString(36)) : this.Me
};

1 个答案:

答案 0 :(得分:0)

VS Code的内置JavaScript IntelliSense无法理解该代码,这就是为什么重命名不起作用的原因。该代码在很大程度上取决于动态行为,例如将g分配给se.prototype,然后进一步将属性写入g。 IntelliSense引擎只是无法理解this.Sr中的eb指的是下面的同一g.Sr(乍一看,对程序员的作用也不明显)

您可以将鼠标悬停在源代码中的各个变量上,以进行调查。如果悬停信息显示any,则表示VS Code IntelliSense引擎无法正确推断变量的类型,因此诸如重命名之类的语义操作将不起作用。您还可以在文件顶部添加// @ts-check,以对代码进行一些基本的类型检查

对于现有代码段,最好的选择是基于文本的查找/替换。