在学习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新人,还请前辈们多多指教。

 

版权声明:本文为ymlh原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:http://www.cnblogs.com/ymlh/p/8052719.html