js内置构造函数属性修改问题
在学习js原型时遇到一个问题,Array,Object等内置构造函数部分属性无法修改,我猜测可能是因为浏览器实现的原因造成的。
1.修改name属性无效。
1 <script type="text/javascript"> 2 3 function Person(){ 4 this.name="我是一个人"; 5 this.skill=function(){ 6 console.log("我会打码"); 7 } 8 }; 9 10 Person.prototype=Array; 11 var p1=new Person(); 12 console.log(p1); 13 console.log(p1.name); 14 console.log(Array.name); 15 Array.name="能改不"; 16 console.log(Array.name); 17 </script>
输出结果如下:
在对Object,Number,Date,String,RegExp,Boolean,Math等内置函数进行测试后,发现除Math外的结果大同小异,均是输出函数名。这些内置函数的name属性值无法修改,我猜测是js的内部实现机理造成的,希望懂行的能指教指教。我比较不能理解的是为啥Array的name属性可以影响Person中的name。为什么创建的对象p1中没有name属性。
Math的输出结果:
IT新人,还请前辈们多多指教。