来自Python背景,我读过这个,学习Javascript
类实际上是“特殊函数”,正如您可以定义函数表达式和函数声明一样,类语法有两个组件:类表达式和类声明。
在dev.mozilla网站上。
我的理解是:
我说错了吗?
发布于 2021-09-04 12:14:18
类确实是函数,函数也是对象--您可以将任意键值对放到函数上,就像放在对象上一样。
class X{}
console.log(typeof X);
console.log(X instanceof Object);
这是一份阶级声明。类表达式类似于:
const TheX = class X{}
console.log(typeof TheX);
console.log(TheX instanceof Object);
当类上直接有键值对(就像对象)时,这些属性通常称为“静态”:
class X{
static prop = 'foo';
}
console.log(X.hasOwnProperty('prop'));
使用class创建的类不能在没有new的情况下被调用,但是用function创建的类可以(在这种情况下它相当于一个标准函数)。
function X() {
}
// As a class:
const x = new X();
// As an ordinary function:
const somethingElse = X();
使用function语法,函数作为类还是普通函数的行为由调用方决定--取决于是否使用new。如果使用new,则函数内的this设置为从X.prototype继承的对象,该对象在结束时自动返回。如果没有使用new,则函数内的this设置为调用上下文(例如someObj.X()将有this be someObj)。
https://stackoverflow.com/questions/69055135
复制相似问题