gpt4 book ai didi

javascript - 如何从 javascript 类中访问原型(prototype)属性?

转载 作者:行者123 更新时间:2023-11-28 18:19:40 26 4
gpt4 key购买 nike

我了解javascript,请原谅我相当基本的问题。如何使用我的类中的属性,如下面的示例代码所示?

function MyClass() {
// nothing special
}

MyClass.prototype.myProperty = {
key1: 'some value 1',
key2: 'some value 2',
};

My Class.prototype.myFunction = function myFunction() {
// I need to retrieve the first value of myProperty
const x = myProperty[Object.keys(myProperty)[0]] + 10; // won't work
return x;
};

module.exports = MyClass;

使用 this.myProperty 会引发错误无法将 undefined 或 null 转换为对象

最佳答案

使用this. :

MyClass.prototype.myFunction = function myFunction() {
const x = this.myProperty[Object.keys(this.myProperty)[0]] + 10;
// -------^^^^^-----------------------^^^^^
return x;
};

这将从对象中获取属性。如果对象没有自己的属性副本,它将从对象的原型(prototype)中获取它。

或者,如果您每次都想从原型(prototype)中获取它,请明确说明:

MyClass.prototype.myFunction = function myFunction() {
const p = MyClass.prototype.myProperty;
const x = p[Object.keys(p)[0]] + 10;
return x;
};
<小时/>

旁注:const从 ES2015 开始,这是一个新事物。如果您使用的是 ES2015(看起来您正在使用 NodeJS,这意味着如果您使用的是 v6 或更高版本,则可以),您可以使用 class 更简单地编写类。符号:

class MyClass {
constructor() {
// nothing special
}
myFunction() {
const x = this.myProperty[Object.keys(this.myProperty)[0]] + 10;
return x;
}
}
MyClass.prototype.myProperty = {
key1: 'some value 1',
key2: 'some value 2',
};

module.exports = MyClass;

请注意,如果您想要 myProperty要在原型(prototype)上,您仍然需要以“笨拙”的方式分配它。但您可能想在构造函数中创建该属性。

<小时/>

旁注 2:除非您更改 myProperty稍后,我强烈建议使用 this.myProperty.key1this.myProperty.key2并且不使用 this.myProperty[Object.keys(this.myProperty)[0]] ,这很难阅读,困惑(未定义的行为,Object.keys返回的键的顺序没有指定,即使在ES2015中也没有),并且需要额外的工作。

关于javascript - 如何从 javascript 类中访问原型(prototype)属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40111763/

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