AngularJS工厂对象被引用



我按照教程创建了一个 AngularJS 工厂

https://medium.com/opinionated-angularjs/angular-model-objects-with-javascript-classes-2e6a067c73bc

问题是,没有创建新对象并且值已更新为以前的对象,这是我的代码

let t1 = new Transaction({
id : '123'
})
let t2 = new Transaction({         
id : '1234'
})
console.log(t1.getId()) // Suppose to get 123 but getting 1234
console.log(t2.getId()) // Getting 1234

这是我的工厂:

.factory('Transaction',function(){
let _data = {};
Transaction.prototype.getId = getId

function Transaction(params) {                 
_data.id = params.id ? params.id : '';
}
function getId() {
return _data.id;
}
return Transaction
});

t1.getId()下,我想得到"123",但我得到的是"1234"。

_data是两个Transaction实例之间的共享对象,它的行为完全符合预期,每次您实例化新Transactionid 都会覆盖前一个,并且您总是会以最后一个结束。

要获得应该是所需行为的内容,请_data实例字段。

factory('Transaction',function(){
Transaction.prototype.getId = getId

function Transaction(params) {
this.data = {};                
this.data.id = params.id ? params.id : '';
}
function getId() {
return this.data.id;
}
return Transaction
});

最新更新