在对象内的JavaScript函数中,哪个作用域表示这一点?
我有一个JavaScript代码,看起来像下面的摘录。 在第一线在对象内的JavaScript函数中,哪个作用域表示这一点?,javascript,typescript,ecmascript-6,Javascript,Typescript,Ecmascript 6,我有一个JavaScript代码,看起来像下面的摘录。 在第一线 此范围是否包含作为参数传递给构造函数的用户实例 我已经读过了,但是,据我所知,在setAdmin中,这个指的是MyClass,它不包括(或者是否?)传递给构造函数的user等参数 export interface IUser { noaOrganisationList: IOrganisation[]; } export interface IOrganisation { id?: number; name?
此
范围是否包含作为参数传递给构造函数的用户
实例
我已经读过了,但是,据我所知,在setAdmin
中,这个指的是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;
}
}
}
setAdmin这指的是MyClass,它不包括(或者是否包括?)诸如传递给构造函数的用户之类的参数
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;
}
}
}
您是对的,这个
是对当前正在构造的MyClass实例的引用。但是,由于您将参数标记为public,因此typescript将将用户置于this.user
上。将构造函数的参数标记为public(或private)是typescript为将参数分配到类实例提供的快捷方式
如果有帮助,下面是代码的传输版本:
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;
});
define([“require”,“exports”],函数(require,exports){
“严格使用”;
defineProperty(导出,“\uu esModule”{value:true});
var MyClass=/**@class*/(函数(){
函数MyClass(用户){
this.user=user;//
setAdmin这指的是MyClass,它不包括(或者是否包括?)诸如传递给构造函数的用户之类的参数
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;
}
}
}
您是对的,this
是对当前正在构造的MyClass实例的引用。但是,由于您将参数标记为public,typescript将将用户置于this.user
上。将构造函数的参数标记为public(或private)是typescript提供的快捷方式,用于将参数分配给类的实例
如果有帮助,下面是代码的传输版本:
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;
});
define([“require”,“exports”],函数(require,exports){
“严格使用”;
defineProperty(导出,“\uu esModule”{value:true});
var MyClass=/**@class*/(函数(){
函数MyClass(用户){
this.user=用户//