<html>
<head>
<script>
function fun1(){
alert("第一次");
}
function fun2(){
alert("第二次");
}
window.onload = function(){
var one = document.getElementById("one"); one.onclick = function(){
fun1();
fun2();
}
function addevent(obj,types,fns){
if(typeof obj[types]!= "function"){
obj[types] = fns;
    obj[types];
}
else{
var old = obj[types];
obj[types] = function(){
old();
fns();
}
}
}
addevent(one,"onclick",function(){
alert("第三次");
})}
</script>
</head>
<body>
<input type = "button" value = "改变" id = "one">
</body>
</html>(1)求给哥哥帮忙解释obj[types]是什么意思?在调用函数的时候addevent(one,"onclick",function()第二个参数传进去的是字符串啊,obj[]的[]里面放个字符串是什么意思啊?
(2)我在燕山大学读书,自诩为高校,TM我问了好几个被公认为有实力的老师,他们均表示没时间(其实就是不会)这大学教育都是TM的什么啊,问啥啥不会,都是垃圾,求哪位哥哥帮帮忙,小弟新手

解决方案 »

  1.   

    估计是真没时间吧,大学老师这么个水平的话就太不可思议了
    js的对象模式是集合,即key-value的模式
    obj["a"]写法与obj.a效果相同
      

  2.   

    obj 就是var one = document.getElementById("one");
    types 就等于onclick
    obj[types]就等于 one.onclick
    至于传参错不错 那是传参的问题
      

  3.   


    function addevent(obj,types,fns){
    if(typeof obj[types]!= "function"){//如果obj["onclick"]= obj.onclick 不是function
    obj[types] = fns;
    obj[types];
    }else{
    var old = obj[types];        //old保存旧操作
    obj[types] = function(){   //建立一个新的function 依次执行旧操作,新操作,并重新绑定
    old();      
    fns();
    }
    }
    }
    adde
      

  4.   

    但是我又试了试将obj[types] 换成 obj.types 结果不行啊,我前面已经var one = document.getElementById("one");了
      

  5.   

    obj[types] 不等于 obj.types的
    obj.types 相当于 obj["types"],也就是直接访问用obj.types,通过传入一个字符串调用则用obj[types]