最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Communication between scripts | Three methods - Stack Overflow

programmeradmin5浏览0评论

How do I properly municate data betweens two scripts.

In this particular case I have an element in one script, but I want to append it in another script.

The simplest way I could do this is by using the global window object as go-between.

But globals are not best practice.

What is the correct way to pass this element to another script?

Both script are encapsulated in the module pattern.

Script 0 Create Element Point

var element = document.createElement( "div" );
element.innerHTML = response_text;

Script 1 Append Element Point

Vi.sta = {

    // implemented in the boot loader - shared global space - appended child already - you don't have to append until now.
    // Static data has already been posed. 
    // Pull off window and append or best practice

};

Both are encapsulated in the module pattern

(function(){ 
    // the code here 
})()

How do I properly municate data betweens two scripts.

In this particular case I have an element in one script, but I want to append it in another script.

The simplest way I could do this is by using the global window object as go-between.

But globals are not best practice.

What is the correct way to pass this element to another script?

Both script are encapsulated in the module pattern.

Script 0 Create Element Point

var element = document.createElement( "div" );
element.innerHTML = response_text;

Script 1 Append Element Point

Vi.sta = {

    // implemented in the boot loader - shared global space - appended child already - you don't have to append until now.
    // Static data has already been posed. 
    // Pull off window and append or best practice

};

Both are encapsulated in the module pattern

(function(){ 
    // the code here 
})()
Share Improve this question edited Aug 24, 2012 at 19:03 asked Aug 23, 2012 at 17:51 user656925user656925
Add a ment  | 

3 Answers 3

Reset to default 6

All JS scripts are run in the global scope. When the files are downloaded to the client, they are parsed in the global scope.

So if you've got

// File_1.js
var myObj = { colour : "blue" };

There's nothing stopping you from doing this:

// File_2.js
var otherObj = { colour : myObj.colour };

As long as File_1.js is loaded before File_2.js

If you are namespacing, ie: MYNAMESPACE = {}; and each file extends your namespace through modules (rather than "module pattern" referring to returning interfaces from immediately-invoking functions), then check for the module's existence.

If you ARE writing modules for a namespaced app, and you DO need access to variables from one module to another, then you should be providing an interface for that.

If you are SANDBOXING modules, then you need to provide them all a proxy similar to a service-locator or a "registry", or develop a messaging-system based on a mediator-pattern.

window.sharedSpace = {};
sharedSpace.sharedValue = 'foo bar';

That way you only have one global object instead of several.

Why don't you just pass the element to a function in the module?

var module1 = (function () {
    return {
        func1: function () {
            // get your element
            var someElement = ...;

            // pass it to the other module
            module2.func2(someElement);
        }
    };
}) ();

var module2 = (function () {
    return {
        func2: function (someElement) {
            // do whatever you want with someElement
        }
    };
}) ();
发布评论

评论列表(0)

  1. 暂无评论