首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript中的实例变量是什么?

JavaScript中的实例变量是什么?
EN

Stack Overflow用户
提问于 2019-04-03 23:26:41
回答 3查看 8.5K关注 0票数 5

在React教程视频中,指导员说您需要在React类组件中使用this.props而不是props,因为在这种情况下,它是一个实例变量。我不完全确定实例变量在这个上下文中是什么。

我发现了许多问题,解释了在Java和其他语言中实例变量是什么,除了JavaScript--在one question (标记的目标-c)中,有人回答“在面向对象的类编程中,实例变量是定义在类中的变量(即成员变量),其中类的每个对象都有一个单独的副本。它们生活在类的生命的内存中。”然而,我知道ES6类只是对象,是基于原型的继承的语法糖--在JS类的情况下,这个答案成立吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-03 23:31:03

实例变量只是对象的一个属性,正如Felix所说。

您不能使用props,因为它引用的是一个名为props的全局或局部变量。要访问的是当前组件的props当前值,该值存储在this.props中。

见“小提琴”:https://jsfiddle.net/vd5ymhcz/1/

票数 3
EN

Stack Overflow用户

发布于 2019-04-04 02:09:23

要理解这一点,您需要了解函数表达式、词法环境、原型继承。

‘'this’关键字是指它所属的对象。

假设我们有这样一堂课,

代码语言:javascript
复制
class Hello{
   constructor(name){
      this.name = name
   }
   hello(){
      console.log(this.name);
   }
}

现在,让我们在这个类的帮助下创建一个新的对象。

代码语言:javascript
复制
var person = new Hello('Alex')

现在我可以做这样的事,

代码语言:javascript
复制
person.hello();

这一行将返回'Alex';

现在让我们来看看console.log(person);

代码语言:javascript
复制
console.log(person)

person ==> { 
              name : 'Alex'
              <prototype> {
                  constructor: function Hello()
              }
           }

您将注意到Hello函数不在person对象的顶层。它处于该对象的第一个原型级别。该原型中的所有内容都将引用类或工厂函数或帮助定义person对象的构造函数。在本例中,它指的是Hello类。

var person是在全局级别定义的。因此,当您调用person.hello()时,它将检查该对象的顶层。如果它不在里面,那么它将进入外部环境,并试图找出hello()是什么东西。这个person对象的外部环境是全局级别的。hello()函数不在全局级别。当javaScript在外部环境中没有找到hello()时,它会抛出一个错误,说明hello()是未定义的。

当我们使用'this‘关键字时,它会说检查原型。把所有的原型都查一遍直到你遇到那个东西。如果它不在那里,那就去外面的环境看看它是否在那里。

'this‘关键字将引用任何东西,指向它所属的对象。此外,请记住,javaScript中的所有内容都是一个期望原始数据的对象。

票数 5
EN

Stack Overflow用户

发布于 2022-09-20 04:50:09

对象是创建对象的类的实例。实例变量是在该类中为该对象定义的任何属性(通常在构造函数中)。每个实例变量都可以使用“this.‘”访问。类的任何方法中的前缀。

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

https://stackoverflow.com/questions/55505710

复制
相关文章

相似问题

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