Jquery你不知道的事。
昨天在做一个数组的深度克隆,具体是什么就不描述了。只是当时给Object对象加了一个方法,如下。
如果在你的页面引入了jquery库时。
- JScript code
<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库之前。
- JScript code
<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>
- HTML code
<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>时
[解决办法]
你的原贴我已经补充说明了:不要在使用jQuery等各种框架库的情况下扩充原型对象,并且给出了替代解决方案,补充了delete用法。
[解决办法]
你是不是用了其他js呢?因为很多都重写了Object,所以当然任意一方让步就可以了。
1.调整js加载先后顺序的
2.delete(Object.prototype.xxx);