帮忙看下这段JS代码错误是怎么回事?

chenjianwei2046 2009-03-30 08:19:52

<html>
<head>
<title></title>
</head>
<script>
function $(id){
return document.getElementById(id);
}

var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}

var Box = Class.create();
Box.prototype = {
initialize : function (members){
var _self = this;
this._members = members;
setInterval(_self.play,1000);
},
play : function (){
alert(this._members[0].id);
}
};

</script>
<body>
<div id="c1"></div>
<div id="c2"></div>
<div id="c3"></div>
</body>
<script>

new Box([$("c1"),$("c2"),$("c3")]);

</script>
</html>

为什么在play方法中this._members出错了?
...全文
95 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mumu_java 2009-03-31
  • 打赏
  • 举报
回复
lz的错误原因是认为

...
function (){
alert(this._members[0].id);
}
...

这段代码中的this代表的是Box,其实这里的this代表的是window对象。所以window对象中是没有members属性的。这就是报错的原因。
mike_24 2009-03-30
  • 打赏
  • 举报
回复
<html>
<head>
<title></title>
</head>
<script>
function $(id){
return document.getElementById(id);
}

var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}

var Box = Class.create();
Box.prototype = {
initialize : function (members){
var _self = this;
this._members = members;
setInterval(_self.play,1000);
},
play : function (){
alert(_members[0].id);
}
};

</script>
<body>
<div id="c1"></div>
<div id="c2"></div>
<div id="c3"></div>
</body>
<script>

new Box([$("c1"),$("c2"),$("c3")]);

</script>
</html>

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧