首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

js对象的初始化时候this的指向,该怎么解决

2012-03-19 
js对象的初始化时候this的指向function DoWork(){this.Name this.Time }DoWork.prototype.Init

js对象的初始化时候this的指向
function DoWork()
{
this.Name = "";
this.Time = "";
}
DoWork.prototype.Init = function()
{
this.Time = this.GetTime();

}
DoWork.prototype.GetTime = function()
{
return "2007-11-07";
}
var doWork = new DoWork();
  如果这里这样
  doWork.Init();
  是ok的,但是如果换成
window.attachEvent("onload",doWork.Init);
  就报错了,指向 this.Time = this.GetTime();后面的this对象指向不对,
  由于必须要等页面加载完毕后才能去初始化对象,所以采用后面的方式要如何做?tks

 

[解决办法]
window.attachEvent( "onload ",doWork.Init); 

此时doWork.Init函数中的this==window对象了.
[解决办法]

JScript code
this是谁执行了它this就是指谁thisSource.func = function () {xxx};thisSource.func();这里this就是thisSourcevar a = {};a.func = thisSource.func;a.func();这里this就是a;同理------------------------attachEvent函数就相当于下面这个函数_attachEvent = function (name, func) {    var wc = this, a = wc.["__" + name + "s"] ? wc.["__" + name + "s"] : (wc.["__" + name + "s"] = []);    a.push(func);};当click的时候就遍例wc.["__" + name + "s"]这种的数组但是它们执行的时候是for (var i = 0 ; i < a.length ; i ++) {    a[i](); //这种的执行方式,this都会被指为window}解决方法如下。。。window.attachEvent("onload", function () { doWork.Init(); }); 

热点排行