我根据此article创建了一个集合。我发现它运行在chrome,firefox和ie9 +上。 我假设有些东西不起作用或者可能,Windows 10的ie9模拟器并没有给我真实的图片。
此扩展程序可能出现什么问题?
测试代码:
<script>
function Collection() {
var collection = Object.create( Array.prototype );
collection = (Array.apply( collection, arguments ) || collection);
return collection;
}
Collection.prototype = Object.create(Array.prototype);
var collection = new Collection();
collection[0] = 1;
console.log(collection[0]);
</script>
答案 0 :(得分:1)
查看http://perfectionkills.com/how-ecmascript-5-still-does-not-allow-to-subclass-an-array/。
特别是
var collection = Object.create(Array.prototype);
创建一个继承自Array.prototype
而不是Collection.prototype
的对象。它会创建一个对象,而不是一个数组。
collection = (Array.apply( collection, arguments ) …
Array
忽略其this
值。并创建Array
个实例,而不是Collection
个实例。
… || collection)
这是毫无意义的,因为Array
永远不会返回假值,所以collection
总是被忽略。
此扩展程序可能出现什么问题?
它创建Array
s,而不是Collection
s。根本没有扩展。尝试在Collection.prototype
放置一些方法并调用它们。