private mouseHover:MouseEventHandler<HTMLElement> = new MouseEventHandler<HTMLElement>();
public get onMouseHover(): MouseEventHandler<HTMLElement> { return this.mouseHover; }
对于上面的代码,我不理解&#39; get&#39;关键词。谁能教我相关知识并给我举例?谢谢!
答案 0 :(得分:4)
有人能教我相关知识并给我举例吗?
它允许您定义getter
:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get
当某人访问属性时,基本上函数 onMouseOver
会将称为 console.log(onMouseOver)
答案 1 :(得分:1)
本质上,它允许您控制属性 getten
时会发生什么在示例代码中,您要了解自己拥有私有财产mouseHover
。这不能在定义的类之外访问。作者希望在类之外访问mouseHover
属性 - 不允许它被覆盖 - 本质上是只读的。
因此,作者在新属性mouseHover
上使用'get'关键字公开了私有onMouseHover
属性。使用get
作者可以告诉JavaScript在读取属性时要执行的操作。如您所见,它只返回支持属性。
这会编译成以下JavaScript
Object.defineProperty(YourClass.prototype, "onMouseHover", {
get: function () {
return this.mouseHover;
},
enumerable: true,
configurable: true
});
要更好地理解这一点,请查看Object.defineProperty的文档 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
答案 2 :(得分:-1)
class SomeObject {
public getFoo () {
return 'foo';
}
public get foo () {
return 'foo';
}
}
var obj = new SomeObject();
// True
obj.getFoo() === obj.foo;
// Does nothing
obj.foo = 'bar';
// Still true
obj.getFoo() === obj.foo;
// Does nothing
delete obj.foo;
// Still true
obj.getFoo() === obj.foo;
// Does nothing
SomeObject.prototype.foo = 'bar';
// Still true
obj.getFoo() === obj.foo;
// It's gone from all instances of SomeObject
delete SomeObject.prototype.foo;
// True
typeof obj.foo === 'undefined';