首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript -类是特殊的函数?

JavaScript -类是特殊的函数?
EN

Stack Overflow用户
提问于 2021-09-04 12:08:48
回答 1查看 291关注 0票数 1

来自Python背景,我读过这个,学习Javascript

类实际上是“特殊函数”,正如您可以定义函数表达式和函数声明一样,类语法有两个组件:类表达式和类声明。

dev.mozilla网站上。

我的理解是:

  • 函数是OOP中的对象。
  • 而不是类是函数。
  • 也许类本身就是对象。我不确定。

我说错了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-04 12:14:18

类确实是函数,函数也是对象--您可以将任意键值对放到函数上,就像放在对象上一样。

代码语言:javascript
运行
复制
class X{}

console.log(typeof X);
console.log(X instanceof Object);

这是一份阶级声明。类表达式类似于:

代码语言:javascript
运行
复制
const TheX = class X{}

console.log(typeof TheX);
console.log(TheX instanceof Object);

当类上直接有键值对(就像对象)时,这些属性通常称为“静态”:

代码语言:javascript
运行
复制
class X{
  static prop = 'foo';
}

console.log(X.hasOwnProperty('prop'));

使用class创建的类不能在没有new的情况下被调用,但是用function创建的类可以(在这种情况下它相当于一个标准函数)。

代码语言:javascript
运行
复制
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)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69055135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档