昨天在做一个数组的深度克隆,具体是什么就不描述了。只是当时给Object对象加了一个方法,如下。
如果在你的页面引入了jquery库时。
 
 <script src="../Scripts/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
       Object.prototype.tag = "Object根对象";
       
        function loads() {            var values = $("#stimes option:selected").text(); //获取SELECT选中的值。
            alert(values);
        }
</script>问题就出在这里,当引入了jquery库,然后再为Object添加一个属性,或者任意的方法时。Jquery将有很多方法不能运行了。
去掉上面的Object.prototype.tag = "Object根对象";代码运行正常,能弹出8.如果加上它,则提示报错。不支持属性或方法。  
   解决的方案,将Object要增加的属性和方法写在引用jquery库之前。
 
<script type="text/javascript">
       Object.prototype.tag = "Object根对象";
       
        function loads() {            var values = $("#stimes option:selected").text(); //获取SELECT选中的值。
            alert(values);
        }
</script>
 <script src="../Scripts/jquery.js" type="text/javascript"></script> <select id="stimes">
                         <option selected="selected">8</option>
                         <option>9</option>
                         <option>10</option>
                         <option>11</option>
                         <option>12</option>
                         <option>13</option>
                         <option>14</option>
                         <option>15</option>
                         <option>16</option>
                         <option>17</option>
                         <option>18</option>
                         <option>19</option>
                         <option>20</option>
                         <option>21</option>
                         <option>22</option>
                         <option>23</option>
                        </select>时

解决方案 »

  1.   

    具体的原因我也不清楚,没去解读过Jquery的源码。不清楚到底是为什么。、昨天找这个错误找了2个小时,才找到解决办法非常的莫名其妙。
      

  2.   

    你的原贴我已经补充说明了:不要在使用jQuery等各种框架库的情况下扩充原型对象,并且给出了替代解决方案,补充了delete用法。
      

  3.   

    delete 方法我倒没试,一想觉得麻烦,我还是觉得写在引用之前也许更好。不用需要用到时再去调用了。
      

  4.   

    你是不是用了其他js呢?因为很多都重写了Object,所以当然任意一方让步就可以了。1.调整js加载先后顺序的
    2.delete(Object.prototype.xxx);