Javascript __原型已弃用。什么是快速和跨浏览器的替代方案?
正如您所知,Javascript __原型已弃用。什么是快速和跨浏览器的替代方案?,javascript,performance,prototype-programming,Javascript,Performance,Prototype Programming,正如您所知,\uuuuuuuuuuuuuuuuuuuuuuuuuu是 MDN: 警告:\uuu proto\uu属性已弃用,不应使用 什么是\uuuu proto\uuuu的快速跨浏览器替代方案? 在我的例子中,我更改了函数的\uuuuuuuuuuuuuuuuu。所以我找不到其他选择 不推荐使用的代码 // one time var proto = {}; proto.bar = function (x) { return this(x) + 10; }; proto.buzz = functi
\uuuuuuuuuuuuuuuuuuuuuuuuuu
是
MDN:
警告:\uuu proto\uu
属性已弃用,不应使用
什么是\uuuu proto\uuuu
的快速跨浏览器替代方案?
在我的例子中,我更改了函数的\uuuuuuuuuuuuuuuuu
。所以我找不到其他选择
不推荐使用的代码
// one time
var proto = {};
proto.bar = function (x) { return this(x) + 10; };
proto.buzz = function () { return this(4); };
// and 100 more function proto.*
proto = _.extend(proto, (function(){}).__proto__); // underscore extend function
// update: change arguments order
// many time
var foo = function (x) { return 2 * x; }
foo.__proto__ = proto;
慢备选方案()
有没有快速和跨浏览器的替代方案?正如链接的MDN文章所说,这是新功能。它似乎有很好的浏览器支持。对于那些不支持它的(IE除外),您可以使用
\uuuuu proto\uuuuu
对其进行填充)
在第一次使用时,您将获得函数的
\uuuu proto\uuuu
,因此您可以简单地使用函数。prototype
proto = _.extend(Function.prototype, proto); // underscore extend function
第二个用途是替换对象上的原型,因此别无选择
ECMAScript 6正在标准化
\uuuu proto\uuuu
,并且还将有对象。setPrototypeOf()
,因此您可以在实现后使用它们。为什么不简单地对象。创建
?“ECMAScript 6正在标准化\uu proto\uu
”源代码?它不在规范中。@FelixKling:当前的草稿中有它。请提供一个链接。@FelixKling这是它吗,在B.2.2.1中?那么关于foo.\uuuu proto\uuuu=proto
?Object.setPrototypeOf()
Safari:不受支持,Internet Explorer:11,Firefox:31,Chrome 34在您的jsPerf中,测试严重偏向于\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
版本,因为您正在重用该版本中的函数,而不是第二版本中的函数……jsPerf结果的另一个原因,实际上,您正在修改Function.prototype
,将方法直接添加到它,因此您的foo.\uuuuuu proto\uuuu=proto
实际上是在做foo.\uuuuu proto\uuuu=Function.prototype
,这不会改变任何东西。这是一个不可操作的Txn。我改变了扩展参数的顺序。那么,如果你用这个改变重新做测试,并且让“慢”版本重用现有的函数,会发生什么呢<代码>foo.bar=proto.bar;foo.buzz=proto.buzz;//等等。foo.\uuuu proto\uuuu
具有最佳性能,foo.bar=proto.bar
优于foo.bar=function(){…}
if (!Object.getProtoTypeOf) {
Object.getProtoTypeOf = function(obj) {
return obj.__proto__;
};
}
proto = _.extend(Function.prototype, proto); // underscore extend function