我知道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
抛出错误Cannot convert undefined or null to object
用途this.
:
MyClass.prototype.myFunction = function myFunction() {
const x = this.myProperty[Object.keys(this.myProperty)[0]] + 10;
// -------^^^^^-----------------------^^^^^
return x;
};
那将从对象获得属性。如果对象没有自己的属性副本,它将从对象的原型中获取它。
或者,如果您想每次从原型中获取它,请明确说明:
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
成为原型,则仍然需要以“笨拙”的方式分配它。但是您可能想在构造函数中创建该属性。
旁注2:除非您myProperty
稍后进行更改,否则我强烈建议您使用this.myProperty.key1
或this.myProperty.key2
不使用this.myProperty[Object.keys(this.myProperty)[0]]
,这很难读,混乱(不确定的行为,Object.keys
未指定返回键的顺序,甚至在ES2015中也不指定)以及额外的工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句