JavaScript - 无法调用我的对象的方法

时间:2013-06-06 11:05:27

标签: javascript html html5

我正在为Android操作系统开发PhoneGap应用程序。我希望我的应用程序尽可能扩展。因此,我将所有模块都写为plgins,将它们保存在一个地图中,然后我想在我的HTML页面中使用它们。我在MyJS.js文件中写了这段代码:

var map = {};

// Allow jQuery to cash the cordova.js
$.ajaxSetup({  cache: true});

$.getScript("cordova-2.6.0.js",function(){

    var AccelerometerSensor = {
            accelJSONObj:cordova.require("cordova/plugin/Acceleration"),
            accelPGAPSens:cordova.require("cordova/plugin/accelerometer"),


            color:'#FF8C00',
            sensorID:'Accelerometer',


            // Flag indicates whether this sensor type is supported by the device or not.
            availability:null,
            isAvailable:function() {
                accelPGAPSens.getCurrentAcceleration(
                        function(x){availability = true;}, 
                        function(){availability = false;});                  
            },

       }
})
.done(function(script, textStatus) {

    map["Accelerometer"] = this.AccelerometerSensor;
    alert('done');
 })
.fail(function(jqxhr, settings, exception) {  
    alert('fail');
});

现在我想调用isAvailable函数,所以我写了这段代码:

map["Accelerometer"].isAvailable()

但我得到了一个TypeError:

  

“无法调用方法'isAvalable'的未定义...”

我做错了什么?谁能告诉我我要做什么?

感谢!!!

1 个答案:

答案 0 :(得分:2)

您正在使用: -

map["Accelerometer"] = this.AccelerometerSensor;

但完成的“这个”是不同的背景,即全球。

var map = {}, AccelerometerSensor;

// Allow jQuery to cash the cordova.js
$.ajaxSetup({  cache: true});

$.getScript("cordova-2.6.0.js",function(){

    AccelerometerSensor = {
            accelJSONObj:cordova.require("cordova/plugin/Acceleration"),
            accelPGAPSens:cordova.require("cordova/plugin/accelerometer"),


            color:'#FF8C00',
            sensorID:'Accelerometer',


            // Flag indicates whether this sensor type is supported by the device or not.
            availability:null,
            isAvailable:function() {
                accelPGAPSens.getCurrentAcceleration(
                        function(x){availability = true;}, 
                        function(){availability = false;});                  
            },

       }
})
.done(function(script, textStatus) {

    map["Accelerometer"] = AccelerometerSensor;
    alert('done');
 })
.fail(function(jqxhr, settings, exception) {  
    alert('fail');