javascript:使用其他文件中的变量

时间:2013-05-16 19:38:43

标签: javascript jquery variables scope

所以,我正在构建一个非常复杂的插件并陷入困境。 (这是我学习的方式,所以障碍很好......)我的代码看起来类似于以下内容:

文件1

if( !window.TextEdit ){
  var TextEdit = {"version": "1.0"};
}

TextEdit.edit = function(context, options) {
    var self = this;
    self.context = context;

    self.buttonDef = {
        bold: {
            class: 'bold',
            command: 'bold',
            icon: 'bold',
            type: 'checkbox',
            label: ''
        },
        italic: {
            class: 'italic',
            command: 'italic',
            icon: 'italic',
            type: 'checkbox',
            label: ''
        },
        underline: {
            class: 'underline',
            command: 'underline',
            icon: 'underline',
            type: 'checkbox',
            label: ''
        }
    }

    self.init();
}

文件2

if( !window.TextEdit.imageload ){
  TextEdit.imageload = {"version": "1.0"};
}

TextEdit.imageload = function() {
    var self = this;
    self.editor = TextEdit;

    self.init();
}

TextEdit.imageload.prototype = {
    init: function() {
        var self = this;

        console.log(self.buttonDef);

        $('.tdt-btn-addimage').click(function() {



        });


    },
    create: function() {

    },
    destroy: function() {

    }   
}

new TextEdit.imageload();

因此,使用Document 2我想访问Document 1中的变量self.buttonDef。我能够很好地访问Document 1中的函数,但不能访问变量。

我正在寻找的是如何buttonDef TextEdit属性。

2 个答案:

答案 0 :(得分:1)

您可以使用以下代码使buttonDef成为TextEdit的属性。

TextEdit.buttonDef = {
        bold: {
            class: 'bold',
            command: 'bold',
            icon: 'bold',
            type: 'checkbox',
            label: ''
        },
        italic: {
            class: 'italic',
            command: 'italic',
            icon: 'italic',
            type: 'checkbox',
            label: ''
        },
    underline: {
        class: 'underline',
        command: 'underline',
        icon: 'underline',
        type: 'checkbox',
        label: ''
    }
};

答案 1 :(得分:-1)

我认为问题是self位于函数edit内部,因此无法在第二个文档的范围内访问。考虑让您的edit函数返回它创建的对象self,将其存储为变量,然后调用var.buttonDef