为什么这适用于角度js

时间:2014-07-16 08:30:25

标签: javascript angularjs

我在这里有以下代码片段(工作),为什么我们仍然可以在addReview函数中使用this.review。使用this.review似乎是错误的上下文,因为this变量必须是addReview函数而不是父函数。如果我错了,请纠正我。

app.controller('ReviewCtrl',function() {
    this.review= {};
    this.addReview = function(product) {
        product.reviews.push(this.review);
        this.review={};
    }
});

1 个答案:

答案 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();