'get' 打字稿中的关键字
'get' keyword in typescript
private mouseHover:MouseEventHandler<HTMLElement> = new MouseEventHandler<HTMLElement>();
public get onMouseHover(): MouseEventHandler<HTMLElement> { return this.mouseHover; }
上面的代码,'get'关键字我没看懂。谁能教我相关知识并举例说明?谢谢!
Could anyone teach me the relative knowledge and give me examples?
它允许你定义一个 getter
: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get
基本上,当某人访问 函数 onMouseOver
调用 属性 例如console.log(onMouseOver)
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';
本质上,它允许您控制 属性 被 获得
时发生的情况
在示例代码中,您要了解您有一个私有 属性 mouseHover
。这不能在它定义的 class 之外访问。作者想要使 mouseHover
属性 可以在 class 之外访问——不允许它被覆盖——本质上是只读的。
所以作者在新的属性onMouseHover
上使用'get'关键字暴露了私有mouseHover
属性。使用 get
作者可以告诉 JavaScript 当 属性 被阅读时该做什么。如您所见,只是 returns 支持 属性.
这被编译成以下内容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
private mouseHover:MouseEventHandler<HTMLElement> = new MouseEventHandler<HTMLElement>();
public get onMouseHover(): MouseEventHandler<HTMLElement> { return this.mouseHover; }
上面的代码,'get'关键字我没看懂。谁能教我相关知识并举例说明?谢谢!
Could anyone teach me the relative knowledge and give me examples?
它允许你定义一个 getter
: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get
基本上,当某人访问 函数 onMouseOver
调用 属性 例如console.log(onMouseOver)
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';
本质上,它允许您控制 属性 被 获得
时发生的情况在示例代码中,您要了解您有一个私有 属性 mouseHover
。这不能在它定义的 class 之外访问。作者想要使 mouseHover
属性 可以在 class 之外访问——不允许它被覆盖——本质上是只读的。
所以作者在新的属性onMouseHover
上使用'get'关键字暴露了私有mouseHover
属性。使用 get
作者可以告诉 JavaScript 当 属性 被阅读时该做什么。如您所见,只是 returns 支持 属性.
这被编译成以下内容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