测试题(2)

睡到现在,我们来接着说说测试题,题目要是有不同的见解的可以告诉我,而且题目我都改动了不少加了好多元素,这些题都是我个人的解法。

 第一题:

<button id="btn">
点击</button>

    var btn=document.getElementById("btn");
    var handle={
        id:"eventhandle",
        exec:function () {
            alert(this.id);
        }
    }
    btn.addEventListener('click',handle.exec)
这道题的结果是btn,主要是在按钮上添加了一个监听事件,addeventlistener,当你点击了按钮之后就会调用handle对象里面的exec属性,他对应的是一个方法,this.id,这个this是谁就至关重要了,addeventlistener这个方法用于指向元素中的添加元素事件句柄,(注:还有removeeventlistener,在ie中是attachevent)所以说绑定元素上是什么就是什么。如果说是:
    btn.οnclick=function () {
        handle.exec()
    }

那this就是对象里面的了,结果自然是eventhandle。在下一个博客中我会介绍这个方法。

ps:上面的题就算是把button的id去掉,也不会找到对象中的id的,相反的是会报错。

第二题:

 var  obj={proto:{a:1,b:2}};
    function F(){}
    F.prototype=obj.proto;
    var f=new F();
    obj.proto.c=3;
    obj.proto={a:-1,b:-2};
    alert(f.a);
    alert(f.b);
    delete  F.prototype['a'];
    alert(f.a);
    alert(obj.proto.a);

第二题是我们讨论的最久的问题,这道题涉及到了原型,地址。本题的结果是 1,2,undefined,-1。首先先定义了一个对象,其中有一个proto属性,值为一个对象。后有定义了一个F函数。首先是给obj的proto加上了一个c值为3,再这个时候,obj的原型和F的原型指向同一个地址,所以说你的obj改变了自然F也会改变,F中也存在了一个c,后来obj把proto彻底的改成了一个新对象,这里就是解题关键了,因为是修改还是重新赋值?是重新,这一步重新的把obj的proto指向了一个新的地址,所以说你修改后对F的所有都是不影响的。a:1,b:2,c:3。最后而结果就明了了吧。不过修改方式是obj.proto.a=5.那就是把他们都修改成5了。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值