Javascript 对象使用类定义属性
在这里,我将尝试使用object.getOwnPropertyDescriptor探索更多关于对象属性的信息。但是当我使用非静态方法时,我没有得到任何响应。我不知道这背后的原因是什么 当我使用非静态的getName方法时 输出-未定义Javascript 对象使用类定义属性,javascript,Javascript,在这里,我将尝试使用object.getOwnPropertyDescriptor探索更多关于对象属性的信息。但是当我使用非静态方法时,我没有得到任何响应。我不知道这背后的原因是什么 当我使用非静态的getName方法时 输出-未定义 class abc { getName() { return 'abc class name' } } console.log(Object.getOwnPropertyDescriptor(abc, 'getName')) 当我使用get
class abc {
getName() {
return 'abc class name'
}
}
console.log(Object.getOwnPropertyDescriptor(abc, 'getName'))
当我使用getName方法static时
输出-对象{可写:真,可枚举:假,可配置:真}
class abc {
static getName() {
return 'abc class name'
}
}
console.log(Object.getOwnPropertyDescriptor(abc, 'getName'))
原因:非静态方法是原型的一部分:
Object.getOwnPropertyDescriptor(abc.prototype, 'getName')
正如您所知,类语法只是语法糖:
function abc(){
//the constructor goes here
}
abc.someStatic = 1;
abc.prototype = {
getName(){
//...
}
};
原因:非静态方法是原型的一部分:
Object.getOwnPropertyDescriptor(abc.prototype, 'getName')
正如您所知,类语法只是语法糖:
function abc(){
//the constructor goes here
}
abc.someStatic = 1;
abc.prototype = {
getName(){
//...
}
};
这是因为在第一个场景中,
getName()
是类型为abc
的对象方法的实例:
let a = new abc();
a.getName() //'abc class name'
在第二个场景中,使用static
关键字创建类方法:
abc.getName() //'abc class name'
只有在第二种情况下,
getName
设置为abc
的ownProperty
。在第一个场景中,getName
在原型上可用,这是因为在第一个场景中,getName()
是类型为abc
的对象方法的实例:
let a = new abc();
a.getName() //'abc class name'
在第二个场景中,使用static
关键字创建类方法:
abc.getName() //'abc class name'
只有在第二种情况下,getName
设置为abc
的ownProperty
。在第一个场景中,getName
在原型上可用