在Zend Studio(Eclipse PDT)中跨多个文件扩展的单个JavaScript对象的自动完成

web*_*com 17 javascript php eclipse eclipse-pdt zend-studio

我的IDE是Zend Studio 8,它具有JavaScript的相对基本视角(类似于Eclipse PDT中的透视图,如果不相同).在我正在处理的应用程序中,我们在多个文件中扩展了一个基础对象,这有效地扼杀了自动完成功能.请参阅下面的示例场景......

// global.js
var App = {
    objectA: {
        method1: function() {},
        method2: function() {}
    },
    objectB: {
        method1: function() {},
        method2: function() {}
    }
};

// extend.js
App.Extend = {
    anotherMethod: function() {}
};
Run Code Online (Sandbox Code Playgroud)

在这种情况下,键入App.会导致自动完成显示为objectAobjectB,但不是Extend.如果我将扩展添加到global.js中的App变量,它将出现在自动完成中,但不会出现在anotherMethod中.如果我要使用var Extend = { /* code */ };,自动完成将适用于该Extend对象,因此问题似乎与代码扩展到多个文件的事实无关.也许是因为单个对象分布在多个文件中......或其他内容.

有人有主意吗?

icy*_*com 0

不熟悉 Zend Studio,但从你的说法来看,尚不清楚它是否仅适用于全局变量。也就是说,如果我理解正确的话,这是有效的:

// global.js
var App = {
    objectA: {
        method1: function() {},
        method2: function() {}
    },
    objectB: {
        method1: function() {},
        method2: function() {}
    }
};

// extend.js
var Extend = {
    anotherMethod: function() {}
};
Run Code Online (Sandbox Code Playgroud)

但是,如果加上这个,会起作用吗?

// extend.js
...
var More = {
    streetWithNoName: false,
};
More.helloWorld = [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

helloWorld如果您无法获得on的自动完成More.(并且当它在 上工作时Extend,您应该获得 for 的自动完成streetWithNoName),那么 Zend 可能没有执行非全局完成,我想无论如何这是一件非常困难的事情。如果可以的话,那么你总是可以这样做:

var innerAppExtend = App.Extend = { ... };
Run Code Online (Sandbox Code Playgroud)

作为一种解决方法,如果您当然可以接受的话。