this" 指的是 window 对象
this" refers to window object
在 BusMonitor 对象中,"this" 指的是 window 对象,这就是为什么当我调用 BaseFunction.call 时 "name" 属性 成为整个脚本的全局对象(这) 在 BusMonitor 对象上。我只希望 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();
您可以在 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);
当然,如果可能的话,您可以先创建对象,然后将其传递给 BaseFunction
function BaseFunction() {
this.name = "test";
}
var BusMonitor = function () {
var obj = {
init: function () { }
};
BaseFunction.call(obj);
return obj;
}();
在 BusMonitor 对象中,"this" 指的是 window 对象,这就是为什么当我调用 BaseFunction.call 时 "name" 属性 成为整个脚本的全局对象(这) 在 BusMonitor 对象上。我只希望 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();
您可以在 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);
当然,如果可能的话,您可以先创建对象,然后将其传递给 BaseFunction
function BaseFunction() {
this.name = "test";
}
var BusMonitor = function () {
var obj = {
init: function () { }
};
BaseFunction.call(obj);
return obj;
}();