- 74
- 0
- 共 0 条
- 全部回答
-
蜜雪冰爽 普通会员 1楼
在 TypeScript 中,当一个子类继承自一个父类时,
this和super属性的值会发生一些变化。这是因为在 TypeScript 中,父类和子类之间存在继承关系,这种关系通过extends关键字来定义。当子类继承自父类时,子类将继承父类的所有属性和方法,包括this和super属性。在
this属性中,this在父类的构造函数或方法调用中默认是当前对象,如果this是一个未定义的对象(例如undefined或null),则会在当前对象上执行this的默认行为,例如调用this.name或this.toString()方法。如果this是一个已定义的对象(例如new MyClass()),则this的this值会是子类对象。在
super属性中,super在父类的构造函数或方法调用中是作为指针传递的,它的值取决于父类的构造函数或方法的参数类型。如果父类的构造函数或方法没有接受super参数,那么super的值将是null。如果父类的构造函数或方法接受super参数,那么super的值将是子类对象的引用,可以用来指向父类的实例变量或方法。以下是一个简单的示例,展示
this和super在子类继承父类时的值变化:```typescript class Parent { constructor(private name: string) {}
public getName(): string { return this.name; }}
class Child extends Parent { constructor(private name: string, super: Parent) { super(name); }
public getName(): string { return super.getName(); }}
let parent = new Child("John", null); console.log(parent.getName()); // 输出 "John"
let child = new Child("Jane", Child); console.log(child.getName()); // 输出 "Child" console.log(child.super.getName()); // 输出 "Parent" ```
在这个示例中,我们首先定义了一个
Parent类,它有一个name属性和一个getName方法。然后,我们定义了一个Child类,它继承自Parent类,并在getName方法中使用super属性来指向Parent类的getName方法。在Child类的构造函数中,我们传递了一个Parent类的实例parent作为参数,所以this的this值是parent。然后,我们调用getName方法,并打印出parent的name,和Child的name,以及Parent类的getName方法的返回值,即parent的name。因此,当子类继承自父类时,
this和super的值会发生变化,this的this值会是子类对象,super的值会是子类对象的引用,指向父类的实例变量或方法。
-
琉璃〆玥倾城╮ 普通会员 2楼
在 TypeScript 中,当一个子类继承自一个父类时,
this和super属性的值会发生一些变化。这是因为在 TypeScript 中,父类和子类之间存在继承关系,这种关系通过extends关键字来定义。当子类继承自父类时,子类将继承父类的所有属性和方法,包括this和super属性。在
this属性中,this在父类的构造函数或方法调用中默认是当前对象,如果this是一个未定义的对象(例如undefined或null),则会在当前对象上执行this的默认行为,例如调用this.name或this.toString()方法。如果this是一个已定义的对象(例如new MyClass()),则this的this值会是子类对象。在
super属性中,super在父类的构造函数或方法调用中是作为指针传递的,它的值取决于父类的构造函数或方法的参数类型。如果父类的构造函数或方法没有接受super参数,那么super的值将是null。如果父类的构造函数或方法接受super参数,那么super的值将是子类对象的引用,可以用来指向父类的实例变量或方法。以下是一个简单的示例,展示
this和super在子类继承父类时的值变化:```typescript class Parent { constructor(private name: string) {}
public getName(): string { return this.name; }}
class Child extends Parent { constructor(private name: string, super: Parent) { super(name); }
public getName(): string { return super.getName(); }}
let parent = new Child("John", null); console.log(parent.getName()); // 输出 "John"
let child = new Child("Jane", Child); console.log(child.getName()); // 输出 "Child" console.log(child.super.getName()); // 输出 "Parent" ```
在这个示例中,我们首先定义了一个
Parent类,它有一个name属性和一个getName方法。然后,我们定义了一个Child类,它继承自Parent类,并在getName方法中使用super属性来指向Parent类的getName方法。在Child类的构造函数中,我们传递了一个Parent类的实例parent作为参数,所以this的this值是parent。然后,我们调用getName方法,并打印出parent的name,和Child的name,以及Parent类的getName方法的返回值,即parent的name。因此,当子类继承自父类时,
this和super的值会发生变化,this的this值会是子类对象,super的值会是子类对象的引用,指向父类的实例变量或方法。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部


