var mC = function(map){
var init = function(iMap){
alert("Init " + this + " with");
}
init(map);
};
var m = new mC({});
为什么我将此作为[对象窗口]获得价值?它是一个窗口对象??
答案 0 :(得分:1)
这是因为init不是“类方法” - 它是你在构造函数中定义和调用的函数。这并没有以任何方式使其他功能与众不同。
你需要在mC函数'this'的上下文中调用init函数:
init.call(this);
或者,你需要让'init'成为this或this.prototype的成员,它将自动使用它作为'this'成员的对象
如果这让您感到困惑,可能需要谷歌关于JavaScript这个关键字:)
答案 1 :(得分:1)
你还期待什么?
您将init定义为函数,然后在全局空间中调用它,这就是您完成所做操作的原因。您没有将它附加到mC类。
答案 2 :(得分:1)
是的!由于init
是mC
的变量,因此它将共享其范围(当前是全局范围,也是window
对象)。
然而。如果您更改为以下内容:
var mC = function(map){
this.init = function(iMap){
alert("Init " + this + " with");
}
this.init(map);
};
var m = new mC({});
然后this
内的init
将是对您的实例的引用。