- 主题:请教JavaScript问题
for (var key in o) {
if (o.hasOwnProperty(key)) {
//....
}
}
【 在 Balancer (巴兰恻然|准备过年) 的大作中提到: 】
: 使用prototype1.3.1的库
: 这个把每个object都加上了extend的方法和属性
: 但是这样的话,for...in...的语句中,就多了extend这么个索引项
: ...................
--
FROM 210.192.102.*
没听说过重写for..
如果你的js代码做的是大片的初始性的工作,并且在这过程中用不到prototype的那些方法,
可以在代码前临时性的把这几个方法删掉,过后再给他恢复回来.
【 在 Balancer (巴兰恻然|准备过年) 的大作中提到: 】
: 刚发现这个问题的时候 我这么改了几个
: 但是发现如果这么改的话,那要改的地方太多了...
: 有没有方法重写for这个函数?
: ...................
--
FROM 210.192.102.*
var s = "test";
alert(s.endsWith&&s.endsWith("t"));
// delete
var old = String.prototype.endsWith;
delete String.prototype.endsWith;
//
alert(s.endsWith&&s.endsWith("t"));
for (var k in s) {
alert(k);
}
//
String.prototype.endsWith = old;
alert(s.endsWith&&s.endsWith("t"));
【 在 Balancer (巴兰恻然|准备过年) 的大作中提到: 】
: 我是考虑把那些方法删掉
: 但是搜了一下,有个说法说是不可以注销任何存在的方法或者变量...
--
FROM 210.192.102.*
放弃prototype比较好.
for in别人还是会继续用的...
【 在 sayinger (言者) 的大作中提到: 】
: 那就杯具了
: 放弃prototype吧,否则就放弃for in用.each...
--
FROM 210.192.102.*
其实也不麻烦,可以直接copy出来,不用一一例举,
只是适用范围有限,如果代码内部也用到prototype添加的那些方法,就不行了
对于Array,可以
alert([].each);
// 之前
var _arrCopy = [];
for (var k in _arrCopy) _arrCopy[k] = _arrCopy[k];
for (var k in _arrCopy) delete Array.prototype[k];
// 代码
alert([].each);
// 之后
for (var k in _arrCopy) Array.prototype[k] = _arrCopy[k];
alert([].each);
【 在 sayinger (言者) 的大作中提到: 】
: 有那功夫把for in改造成each都够了
--
FROM 210.192.102.*
给恢复了就没事吧
就算点出event也不会卡在中间执行,只能在恢复之后执行.
不过不是自己一个人的代码,最好还是不用prototype.
【 在 withinsea (沐海~魔導奏器|歌の琴フォルテール) 的大作中提到: 】
: 最好别偷这个懒
: 在代码中间删掉还没恢复的时候
: 用户点个 event 出来就有的瞧了……
: ...................
--
FROM 210.192.102.*
...
从哪来回哪儿去
你老婆喊你回家抱孩子!
【 在 chinapku (才鸟) 的大作中提到: 】
: 拜goofect牛!
--
FROM 210.192.102.*