在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();
答案 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;
}();