我有一个JavaScript代码,看起来像下面的摘录。 在行中,
this.orgBusinessKey = this.user.noaOrganisationList[0].businessKey;
this
范围是否包含user
实例作为参数传递给构造函数?
我已经阅读过此post on this
scope,但根据我的信念,在setAdmin
,this
指的是MyClass
,其中不包括(或不包括)像user
这样的参数传递给了构造函数。
export interface IUser {
noaOrganisationList: IOrganisation[];
}
export interface IOrganisation {
id?: number;
name?: string;
businessKey: string;
}
export class MyClass {
orgBusinessKey: string = '';
constructor(public user: IUser)
{
this.setAdmin(user);
}
setAdmin(user: IUser): void {
if (user && user.noaOrganisationList && !_.isEmpty(user.noaOrganisationList)) {
this.orgBusinessKey = this.user.noaOrganisationList[0].businessKey;
}
}
}
答案 0 :(得分:2)
setAdmin指的是MyClass,它不包含(或不是?)传递给构造函数的参数,如user。
您是正确的,this
是对当前正在构造的MyClass实例的引用。但是,由于您将参数标记为public,因此打字稿将将用户置于this.user
上。将构造函数的参数标记为公共(或私有)是打字稿提供的一种快捷方式,用于将参数分配给类的实例。
如果有帮助,则代码的转译版本如下所示:
define(["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var MyClass = /** @class */ (function () {
function MyClass(user) {
this.user = user; // <------------------ SEE THIS LINE
this.orgBusinessKey = '';
this.setAdmin(user);
}
MyClass.prototype.setAdmin = function (user) {
if (user && user.noaOrganisationList && !_.isEmpty(user.noaOrganisationList)) {
this.orgBusinessKey = this.user.noaOrganisationList[0].businessKey;
}
};
return MyClass;
}());
exports.MyClass = MyClass;
});