OO的Javascript代码完成任何IDE(Oo javascript code completi

2019-07-31 15:28发布

你知道它可以自动完成这种代码的任何IDE?

我这里有一个JavaScript类生成:

(function() {
    var core = {
        bind : function(method, scope) {
            if (!( method instanceof Function))
                throw new TypeError("Function needed as method.");
            if ( typeof (scope) != "object")
                throw new TypeError("Object needed as scope.");
            return function() {
                return method.apply(scope, arguments);
            };
        },
        require : function(source) {
            if ( typeof (source) != "object" || !source)
                throw new TypeError("Object needed as source.");
            for (var property in source)
                if (source.hasOwnProperty(property) && !this.prototype.hasOwnProperty(property))
                    this.prototype[property] = source[property];
        },
        override : function(source) {
            if ( typeof (source) != "object" || !source)
                throw new TypeError("Object needed as source.");
            for (var property in source)
                if (source.hasOwnProperty(property))
                    this.prototype[property] = source[property];
        },
        extend : function(source) {
            var superClass = this;
            var newClass = source.hasOwnProperty("constructor") ? source.constructor : function() {
                superClass.apply(this, arguments);
            };
            newClass.superClass = superClass;

            var superClone = function() {
            };
            superClone.prototype = superClass.prototype;
            newClass.prototype = new superClone();
            newClass.prototype.constructor = newClass;

            if (source)
                newClass.override(source);
            return newClass;
        }
    };

    core.require.call(Function, core);

    Function.create = function (source){
        var newClass = source.hasOwnProperty("constructor") ? source.constructor : function() {};
        newClass.override(source);
        return newClass;
    };
})(); 

我需要为这些示例类代码完成(在评论中写道):

//Function.prototype: bind, require, override, extend
//Function.create

var A = Function.create({ //offer Function.[create]
    test: function (){
        console.log("a");
    }
});

//A is a Function instance
//A.prototype: test

var B = A.extend({ //offer A.[extend]
    test: function (){
        console.log("b");
    },
    test2: function (){
        console.log("b2");
    }
});

//B is a Function instance
//B.prototype inherits from A.prototype
//B.prototype.test overrides A.prototype.test

var F = Function.create({ //offer Function.[create]
    getA: function (){
        return new A();
    },
    getB: function (){
        return new B();
    }
});
//F is a Function instance
//F.prototype getA, getB returns A and B instances

var f = new F(); //offer [F]
//f inherits from F.prototype
var a = f.getA(); //offer f.[getA]
//a inherits from A.prototype
var b = f.getB(); //offer f.[getB]
//b inhertis from B.prototype

a.test(); //offer a.[test]
b.test(); //offer b.[test]
b.test2(); //offer b.[test2]

所以,我必须让IDE莫名其妙地知道,这些职能中存在的Function.prototype的,而这些功能是创建功能情况,他们正在编写到这些实例的原型。 这是可能只与我的代码手工索引,像jsdoc,但是这还不足以形容例如继承。 所以,我需要它至少可以处理JS继承,为此我可以写一个自动创建索引这个插件的IDE。 (也许插件可以办理财产继承的也一样,我不知道该索引是怎么工作的?)

哪个IDE是深谙此道(以及如何)?

Answer 1:

溶液1:

我发现,在Eclipse中的JavaScript索引器的Web工具平台/ JavaScript开发工具的一部分。 源代码是在这里。 开发者写道,InferEngine易于扩展,所以你可以写一个Eclipse插件。 在这种情况下, 这个博客是真的,真的,真的很有用。 它具有很大的文章如何扩展JSDT,以及JSDT开发人员也可以帮助你。 不幸的是,我没有太多的时间去创造这样的事情,如果有另一种解决方案。

溶液2:

环顾四周,发现真正的问题是,JSDOC 3未完全没有在NetBeans中,也不在Eclipse JSDT和集锦支持。 我发现JSDOC 3支持的唯一IDE是Jetbrains的WebStorm,所以我会使用它。 (没有测试ReSharper的为Visual Studio,但它是JetBrains的产品要么,所以它可能也可以。)

最初的例子与webstorm jsdoc 3:

/** @class*/
var A = Function.create(//offer Function.[create] -> OK!
/** @lends A.prototype*/
{ 
    test: function (){
        console.log("a");
    },
    testA: function (){
        console.log("a2");
    }
});

/** @class*/
/** @extends A*/
var B = A.extend(//offer A.[extend] -> OK!
/** @lends B.prototype*/
{ 
    test: function (){
        console.log("b");
    },
    testB: function (){
        console.log("b2");
    }
});

/** @class*/
var F = Function.create(//offer Function.[create]  -> OK!
/** @lends F.prototype*/
{ 
    /** @returns A*/
    getA: function (){
        return new A();
    },
    /** @returns B*/
    getB: function (){
        return new B();
    }
});

var f = new F();
f.getA().test(); //offer f.[getA], offer f.getA().[test] -> OK
f.getA().testA(); //offer f.[getA], offer f.getA().[testA] -> OK
f.getB().test(); //offer f.[getB], offer f.getB().[test] -> OK
f.getB().testA(); //offer f.[getB], offer f.getB().[testA] -> OK
f.getB().testB(); //offer f.[getB], offer f.getB().[testB] -> OK


Answer 2:

您可以使用类似WebStorm或VisualStudio中有ReSharper的安装6和它建立的所有对象的所有原型的列表,你可以使用..它不是特别有用,我也不会推荐它。但有些事情总比没有好..



文章来源: Oo javascript code completion in any IDE