这"指的是窗口对象

时间:2015-01-13 07:51:18

标签: javascript this

在BusMonitor对象中,“this”指的是当我在BusMonitor对象上调用BaseFunction.call(this)时,为什么“name”属性成为整个脚本的全局的窗口对象。我只希望BaseFunction的属性仅对BusMonitor对象可用。怎么做?

function BaseFunction() {

    this.name = "test";

}

var BusMonitor = function () {

    BaseFunction.call(this);

    return {
        init: function () {
        }
    }

}();

我可以通过以下方式实现,但我不想创建这样的对象。

function BusMonitor () {

    BaseFunction.call(this);

    return {
        init: function () {

        }
    }

};

var busMonitor = new BusMonitor();
busMonitor.init();

2 个答案:

答案 0 :(得分:0)

您可以在BusMonitor中定义一个localScope来保存名称值,如下所示:

function BaseFunction() {
    this.name = "test";
}

var BusMonitor = function () {
    var localScope = {};
    BaseFunction.call(localScope);
    console.log("local name:" + localScope.name);
    return {
        init: function () {
        }
    }

}();
console.log("global name: " + name);

答案 1 :(得分:0)

如果可能的话,您可以先创建对象,然后将其传递给BaseFunction

function BaseFunction() {
    this.name = "test";
}

var BusMonitor = function () {
    var obj = {
        init: function () { }
    };

    BaseFunction.call(obj);

    return obj;
}();