javascript - 哪个作用域在对象内的 JavaScript 函数中表示 this?
问题描述
我有一个类似于下面摘录的 JavaScript 代码。线上,
this.orgBusinessKey = this.user.noaOrganisationList[0].businessKey;
范围是否this
包含user
作为参数传递给构造函数的实例?
我已经阅读了关于this
scope的这篇文章,但是,根据我的信念, atsetAdmin
this
指的是MyClass
which 不包括(或者是吗?)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 指的是 MyClass ,它不包括(或者是吗?)像用户传递给构造函数的参数。
没错,这this
是对当前正在构建的 MyClass 实例的引用。但是,由于您将参数标记为 public,typescript会将用户置于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;
});
推荐阅读
- javascript - 当您通过路由更改页面时反应 CSSTransition
- flutter - 更改 Flutter 有状态小部件的最终小部件变量而状态变量不更改的原因
- c++ - 在 Qt 中包装 connect 方法隐藏了编译器所需的信息
- mongodb - MongoDB数据返回[]
- python - 将 Tensorboard 服务器添加到 Flask 端点
- ios - Swift .xib 文件表格单元格
- java - 二进制搜索除以 4
- javascript - 如何删除函数中的 EventListener?
- openssl - ar: libcrypto.so: 安装 openssl-1.1.1g 时无法识别文件格式
- jquery - 如何在 jquery 中更改 django 日期格式?