我深入了解这一点,并与打字游戏场一起玩。 我用getter声明了两个类,用你的问题中描述的get方法声明了第二个类。
让我们来看看它的样子:
在第一个例子中,我们宣布了通过以下方式获取属性值的方法:
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
getGreeting() {
return this.greeting;
}
}
哪种翻译成JavaScript它看起来像后:
var Greeter = (function() {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.getGreeting = function() {
return this.greeting;
};
return Greeter;
}());
和关于我们宣布以下列方式吸气第二个例子:
class GetterGreeter {
_greeting: string;
constructor(message: string) {
this._greeting = message;
}
get greeting() {
return this._greeting;
}
}
哪种翻译后的样子:
var GetterGreeter = (function() {
function GetterGreeter(message) {
this._greeting = message;
}
Object.defineProperty(GetterGreeter.prototype, "greeting", {
get: function() {
return this._greeting;
},
enumerable: true,
configurable: true
});
return GetterGreeter;
}());
(您可以通过声明并翻译成JavaScript here打)你可以用get方法看到(你的第一个例子)该方法在原型上声明,在第二个示例中使用getter模式typescript使用defineProperty api。
在这两种情况下,我们都调用一个方法,并且角度也会在其更改检测期间调用一个方法来识别更改并重新呈现。
正如我所看到的,这只是一种语法糖,对于相同的方法,我没有看到任何性能方面的好处。
我认为这仅仅是同一事物的一个语法糖。你有没有看到使用其中之一的好处? – galvan
不,这是我的问题,我想了解是否有其他问题。 – ng2user