iNum通过你重构的Number.prototype.toHexString方法alert出的是一个显示值,而不会去影响iNum的实际值.而iNum并不是通过new Number(15)创建的.所以它只是一个number型的数据,而不是Number的对象.也就是说你的测试方式不对。
arguments每个函数都会有,因此,arguemnts只会在内部找自身的arguments,
无法引用到外层的arguments
<script type="text/javascript">
// 求圆形面积,矩形面积, 三角形面积
function area () {
if(arguments.length == 1) {
alert(3.14 * arguments[0] * arguments[0])
} else if(arguments.length == 2) {
alert(arguments[0] * arguments[1])
} else if(arguments.length == 3) {
alert(arguments[0] + arguments[1] + arguments[2])
} else {
return null
}
}
area(10,20,30)
</script>
1.如果你是初学,那你就把string类型和string对象当成同一个东西.例如
var a = 'abc'
var a = new String('abc')
他们在应用层是同一个概念,拥有同样的属性和方法
2.如果你要死磕底层的.
可以看做,数据类型就是一个伪对象.通过字面量的方式声明了一个变量之后,解释器会把他挂到对应的对象属性上,那他们就是一个伪对象.可以拥有对应的属性
伪类和伪元素的区别是它们是否创造了新的元素,这个新创造的元素就叫伪元素。伪元素不存在在DOM文档中,是虚拟的元素,是创建新元素,这个伪元素是某个元素的子元素,这个子元素虽然在逻辑上存在,但却并不实际存在于文档树中。
伪类和伪元素的区别
伪类是类似于添加类所以可以是多个,而伪元素在一个选择器中只能出现一次,并且只能出现在末尾,可以同时使用多个伪类,而只能同时使用一个伪元素,CSS3中伪类和伪元素的语法不同,伪类link,hover,伪元素before,after。
相同点都可以用来表示伪类对象,用来设置对象前的内容,before和before写法是等效的,after和after写法是等效的。不同点beforeafter是Css2的写法,beforeafter是Css3的写法,所以css2的要比css3的兼容好,beforeafter的兼容性要比beforeafter好。
在H5开发中建议使用beforeafter比较好,注意伪对象要配合content属性一起使用,伪对象不会出现在DOM中,所以不能通过js来操作,仅仅是在CSS渲染层加入,伪对象的特效通常要使用hover伪类样式来激活。