在JavaScript(特别是NativeScript)中添加全局变量/函数

在JavaScript(特别是NativeScript)中添加全局变量/函数,javascript,nativescript,Javascript,Nativescript,我正在学习如何使用NativeScript编写应用程序。我相信最好的学习方式是通过实践。出于这个原因,我正在构建一个基本的应用程序 在这个应用程序中,我试图创建一个函数和一个变量,我可以访问应用程序中的所有视图模型和其他代码。为了做到这一点,我想在应用程序对象上添加一个函数和变量 在NativeScript中,应用程序使用以下代码初始化: app.js var application = require("application"); application.mainModule = "main

我正在学习如何使用NativeScript编写应用程序。我相信最好的学习方式是通过实践。出于这个原因,我正在构建一个基本的应用程序

在这个应用程序中,我试图创建一个函数和一个变量,我可以访问应用程序中的所有视图模型和其他代码。为了做到这一点,我想在应用程序对象上添加一个函数和变量

在NativeScript中,应用程序使用以下代码初始化:

app.js

var application = require("application");
application.mainModule = "main-page";
application.start();
application.myFunction();
console.log(application.myVariable);
我想我可以利用这一点,添加一个全局可见的函数和变量,如下所示:

application.prototype.myFunction = function() {
  console.log('I made it!');
};
application.myVariable = 'some value';
然后,在我的视图模型或其他代码中,我可以执行如下操作:

views/home.js

var application = require("application");
application.mainModule = "main-page";
application.start();
application.myFunction();
console.log(application.myVariable);
然而,当我运行这段代码时,我得到一个错误,表明应用程序未定义。我不完全理解这一点。我认为,因为应用程序是在app.js中定义/实例化的,所以它将是全局可见的。然而,事实似乎并非如此。同时,我不知道该怎么办。

使用全局名称空间。在你的app.js中,代码:

var application = require("application");
application.mainModule = "main-page";

global.myVariable = 'some value';

application.start();

然后,您可以在应用程序中的任何位置使用global.myVariable

我知道这已经很旧了,但这有多令人不快?(因为这似乎是共享数据而不必重新写入所有可观测数据的唯一方法)我们可以拥有全局可观测和propertyChangeEvent吗?