关于导航栏变宽的j s代码问题

鼠标悬浮导航栏变宽图片说明图片说明
第一个无法正常运行 ,第二个将this换成This就能运行了
1 为什么会出现这种情况
2。This.style.width = This.offsetWidth + 8 + "px";
换成This.offsetWidth = This.offsetWidth + 8 ;为什么无法运行(.tyle.width和offsetWidth区别)

setInterval执行的函数this指向window,已经脱离onmouseover事件,所以不是dom对象,你用That存储this相当于做了个闭包

offsetXXXX是位置,只读的,无法设置。style不用说了吧,专门就是修改元素样式用的

https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetLeft

 The HTMLElement.offsetLeft read-only property returns the number of pixels that the upper left corner of the current element is offset to the left within the HTMLElement.offsetParent node.

1.第一个this指向function(){....},注意这个立即执行的funtion()虽然在上面的构造函数内,可它不属于上面的构造函数,也不属于对象a,所以此时的this指向的是全局对象global,this.value返回的是undefined第二个This=this,这个this就属于上面的构造函数,也同样就属于对象a了
2. style.width能够获取a的宽度,不过宽度是使用内部样式定义的,并且此宽度就是width定义的宽度,offsetWidth获取的是一个整数值,而style.width获取的是一个字符串,并且带有单位

1.第一个this指向function(){....},注意这个立即执行的funtion()虽然在上面的构造函数内,可它不属于上面的构造函数,也不属于对象a,所以此时的this指向的是全局对象global,this.value返回的是undefined第二个This=this,这个this就属于上面的构造函数,也同样就属于对象a了
2. style.width能够获取a的宽度,不过宽度是使用内部样式定义的,并且此宽度就是width定义的宽度,offsetWidth获取的是一个整数值,而style.width获取的是一个字符串,并且带有单位