class Queue<T> {
private data: T[] = [];
push1 = (item: T) => {
console.log(1,this)
this.data.push(item)
};
push(item: T) {
console.log(2, this)
this.data.push(item)
}
}
// 简单的使用
const queue = new Queue<number>();
queue.push(0);
queue.push1(1)
打印结果:
编译结果:
var Queue = /** @class */ (function () {
function Queue() {
var _this = this;
this.data = [];
this.push1 = function (item) {
console.log(1, _this);
_this.data.push(item);
};
}
Queue.prototype.push = function (item) {
console.log(2, this);
this.data.push(item);
};
return Queue;
}());
// 简单的使用
var queue = new Queue();
queue.push(0);
queue.push1(1);
这两种方法有什么本质的区别吗
一个在原型链上、一个不在。
你要是没有继承的话两者就没区别。
P.S. 这跟 TS 无关,ES6 的 class 就是这样工作的。