你能在Javascript中创建一个不从Object继承的对象吗?

时间:2012-01-25 15:34:54

标签: javascript inheritance object

偶尔会有一个JS framework或库认为将一些新的新功能添加到ObjectArray的原型中是一个非常明智的想法。我现在找不到更多的例子了,但我记得以前我遇到过这个问题。当然,这样做会破坏旧的for(...in...)循环,因为突然现在也枚举了这些属性。要解决此问题,您必须在访问之前使用.hasOwnProperty()检查每个枚举属性。在尝试编写健壮的代码时,这很麻烦。

所以我想知道 - 有什么方法可以制作我自己的对象,这样他们就不会继承Object?最初玩.prototype没有结果。也许有一些技巧呢?或者一切都会继承Object并且我无能为力吗?

已添加:我想我应该注意到我希望它能用于浏览器中的客户端脚本,并且兼容性应该包括IE6,或者至少包括IE7。其他浏览器版本要求更宽松,当然越多越好。 (是的,遗憾的是,企业界仍然生活在IE世界......)

2 个答案:

答案 0 :(得分:4)

在ECMAScript 5中,您可以将null传递给Object.create

> obj = Object.create(null);
  Object
    No Properties

答案 1 :(得分:1)

您可以显式删除任何可枚举的Object属性, 但是,模式浏览器允许使用不可数的Object方法。

应该可以在旧浏览器中使用。

function Myobject(props){
}
var O=Object,OP=Object.prototype;
for(var p in O)delete Myobject[p];
for(var p in OP)delete Myobject.prototype[p];