我在这里有以下代码片段(工作),为什么我们仍然可以在addReview
函数中使用this.review。使用this.review
似乎是错误的上下文,因为this
变量必须是addReview
函数而不是父函数。如果我错了,请纠正我。
app.controller('ReviewCtrl',function() {
this.review= {};
this.addReview = function(product) {
product.reviews.push(this.review);
this.review={};
}
});
答案 0 :(得分:2)
它不是棱角分明的,它是javascript和继承游戏,它们都非常有意义。
如果该方法附加到原型,您可能希望this
像在此处一样工作。在构造函数中添加方法具有相同的效果,这解释了为什么子项中的this
是相同的this
。
为什么不呢?如果你想一想为什么原型上的this
内部方法应该引用构造函数,因为如果没有它,OOP将无法正常工作。
function Parent() {
this.foo = true;
// this works the same way
this.childOnContructor = function() {
console.log(this.foo);
};
}
// this you expect to work
Parent.prototype.childOnPrototype = function() {
console.log(this.foo);
}
var parent = new Parent();
parent.childOnContructor();
parent.childOnPrototype();