有这个代码:
'use strict'
var collectionProto = {
values: function() {
return this;
},
count: function() {
return this.length;
},
at: function(index) {
return (index > this.length) ? this[index - 1] : null;
},
append: function(value) {
(isArray(value)) ? this.concat(value): this.push(value);
},
removeAt: function(index) {
if (index > this.length) {
return false;
}
this.splice(index - 1, 1);
return true;
}
};
function Collection() {
//this = [];
return [];
}
Collection.prototype = collectionProto;
Collection.prototype.constructor = Collection;
var numbers = new Collection();
console.log(numbers.values());
其实错误
TypeError: numbers.values 不是函数
还有两个问题:
- 为什么会弹出错误?
- 为什么不能在构造函数中写
this = []
?毕竟this
,这里是创建默认解释器的对象。
this
是一个服务构造,它不能被覆盖。是的,有什么意义?当您从构造函数返回一个对象时,创建的对象会被遗忘。因此(在没有 ES6 的情况下)您可以替换
__proto__
(在 IE11+ 中支持):