2007年2月16日
1 1. <script> 2 2. 3 3. function Test(){ 4 4. this.say1 = function(s){ 5 5. alert(s); 6 6. } 7 7. this.say2 = function(s){ 8 8. alert(s); 9 9. } 10 10. } 11 11. 12 12. function actsAsAspect(object) { 13 13. object.yield = null; 14 14. object.rv = { }; 15 15. object.before = function(method, f) { 16 16. var original = eval("this." + method); 17 17. this[method] = function() { 18 18. f.apply(this, arguments); 19 19. return original.apply(this, arguments); 20 20. }; 21 21. }; 22 22. object.after = function(method, f) { 23 23. var original = eval("this." + method); 24 24. this[method] = function() { 25 25. this.rv[method] = original.apply(this, arguments); 26 26. return f.apply(this, arguments); 27 27. } 28 28. }; 29 29. object.around = function(method, f) { 30 30. var original = eval("this." + method); 31 31. this[method] = function() { 32 32. this.yield = original; 33 33. return f.apply(this, arguments); 34 34. } 35 35. }; 36 36. } 37 37. 38 38. function beforeHander(s){ 39 39. alert("aspect said:"); 40 40. } 41 41. function afterHander(s){ 42 42. alert("said by aspect"); 43 43. } 44 44. 45 45. var t = new Test(); 46 46. actsAsAspect(t); 47 47. t.before("say1",beforeHander); 48 48. t.after("say2",afterHander); 49 49. 50 50. test = function(){ 51 51. t.say1("hello1"); 52 52. t.say2("hello2"); 53 53. } 54 54. test(); 55 55. </script>
等级高的规则会覆盖掉等级低的规则。 具有style属性编写的规则具有最高的等级。具有ID选择器的规则比没有ID选择器的规则等级高。具有类选择器的规则比只有类型选择器的规则等级高。如果两个规则的等级相同,后定义的覆盖之前定义的规则。 a->style样式的规则,如果有a=1 b->ID选择器的总和 c->类,伪类和属性选择器的总和 d->类型选择器和伪元素选择器的总和 以style----id------class------element的顺序排列。
选择器 |
特殊性a~d |
特殊性总和 |
style="" |
1,0,0,0 |
1000 |
#x #y{} |
0,2,0,0 |
200 |
#x .z{} |
0,1,1,0 |
110 |
div #x{} |
0,1,0,1 |
101 |
#x{} |
0,1,0,0 |
100 |
p .z .m{} |
0,0,2,1 |
21 |
p .z{} |
0,0,1,1 |
11 |
div p{} |
0,0,0,2 |
2 |
p{} |
0,0,0,1 |
1 |
1
var
net
=
new
Object();//命名空间,防止全局变量的冲突
2
net.READY_STATE_UNINITIALIZED
=
0
;
3
4
net.ContentLoader
=
function
(url, onload, onerror)
{
6
this
.url
=
url;
7
this
.req
=
null
;
8
this
.onload
=
onload;//保存是方法名
9
this
.onerror
=
(onerror)
?
onerror :
this
.defaultError;
10
this
.loadXMLDoc(url);
11
}
12
net.ContentLoader.prototype
=
{
13
loadXMLDoc:
function
(url)
{
15
16
try
{
var
loader
=
this
;//重点!loader为new出来的对象。
this
.req.onreadystatechange
=
function
()
{
20
loader.onReadyState.call(loader);//重点! 因为loader为new出来的对象,所以它可以调用对象内部的属性或方法。应该可以像在catch方法内一样使用this调用原型内的方法。
21
}
23
}
24
catch
(err)
{
26
this
.onerror.call(
this
);//同上
27
}
28
}
29
onReadyState:
function
()
{
31
var
req
=
this
.req;
32
var
ready
=
req.readyState;
33
34
this
.onload.call(
this
);//this.onload为一个方法名。这样是调用new出来的对象的回调函数。
35
36
this
.onerror.call(
this
);
37
}
38
defaultError:
function
()
{
40
alert();
41
}
42
}
//这样做,可以把所有的状态都保存在对象内部,而不是设置一个全局变量。
1.form元素是默认有padding的。 2.tbody在ie下没有innerHTML属性。
|
|
随笔:11
文章:0
评论:0
引用:0
常用链接
留言簿(2)
随笔分类
随笔档案
搜索
最新评论
阅读排行榜
评论排行榜
|
|