首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript示例-更改标准JavaScript对象的原型

Javascript示例-更改标准JavaScript对象的原型
EN

Stack Overflow用户
提问于 2015-07-07 02:56:50
回答 1查看 99关注 0票数 0
代码语言:javascript
复制
<!DOCTYPE html>
<html>
<body>

 <p id="demo"></p>

  <script>
  Date.prototype.name="not good";

 var d=new Date();

    document.getElementById("demo").innerHTML =d.name;

   </script>

   </body>
   </html>

结果-

代码语言:javascript
复制
not good

在上面的示例中,名称字段将使用prototype功能添加到数据对象中。

这样做会有什么缺点呢?这里所做的改变是否会永久地反映出来?

根据w3scholls的说法,我得到了这个注释--只修改了您自己的原型。永远不要修改标准JavaScript对象的原型.

但有时不是很方便吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-07 03:05:30

除了在旧的实现中实现标准定义的行为的Poly填充之外,通常并不认为修改内置对象的实现是一种良好的做法。以下是其中一些原因:

  1. 标准对象是公共命名空间。标准可能会随着时间的推移而发展,并添加可能与您添加的属性冲突的新方法/属性。最好避免这种可能性,并避免可能与未来浏览器冲突的代码。
  2. 如果一个项目中使用的多段代码都在这样做(假设一个项目吸引了15个第三方库来完成它的工作),那么修改之间就有可能发生冲突(因为它们没有被任何标准定义)。
  3. 您可能正在修改标准对象的行为,其方式可能会破坏某些现有代码。例如,向某些对象添加可枚举属性或方法可能会使迭代现有属性的现有代码混乱。如果要添加某些内容,请确保使用Object.defineProperty()添加它,使其不可枚举。
  4. 几乎总有另一种方式来完成你想要做的事情,它没有这些风险,而且也同样有效。例如,jQuery选择创建一个容器包装器(它自己的对象),它包含对DOM对象的引用,是它自己的方法的容器对象。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31258992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档