gpt4 book ai didi

javascript - 哪个范围在对象内的 JavaScript 函数中表示 this?

转载 作者:行者123 更新时间:2023-12-01 01:15:36 27 4
gpt4 key购买 nike

我有一段 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;
}
}
}

最佳答案

setAdmin this refers to MyClass which does not include (or does it?) the parameters like user passed to the constructor.

你说得对,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;
});

关于javascript - 哪个范围在对象内的 JavaScript 函数中表示 this?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54790923/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com