在React教程视频中,指导员说您需要在React类组件中使用this.props而不是props,因为在这种情况下,它是一个实例变量。我不完全确定实例变量在这个上下文中是什么。
我发现了许多问题,解释了在Java和其他语言中实例变量是什么,除了JavaScript--在one question (标记的目标-c)中,有人回答“在面向对象的类编程中,实例变量是定义在类中的变量(即成员变量),其中类的每个对象都有一个单独的副本。它们生活在类的生命的内存中。”然而,我知道ES6类只是对象,是基于原型的继承的语法糖--在JS类的情况下,这个答案成立吗?
发布于 2019-04-03 23:31:03
实例变量只是对象的一个属性,正如Felix所说。
您不能使用props,因为它引用的是一个名为props的全局或局部变量。要访问的是当前组件的props当前值,该值存储在this.props中。
发布于 2019-04-04 02:09:23
要理解这一点,您需要了解函数表达式、词法环境、原型继承。
‘'this’关键字是指它所属的对象。
假设我们有这样一堂课,
class Hello{
constructor(name){
this.name = name
}
hello(){
console.log(this.name);
}
}现在,让我们在这个类的帮助下创建一个新的对象。
var person = new Hello('Alex')现在我可以做这样的事,
person.hello();这一行将返回'Alex';
现在让我们来看看console.log(person);
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中的所有内容都是一个期望原始数据的对象。
发布于 2022-09-20 04:50:09
对象是创建对象的类的实例。实例变量是在该类中为该对象定义的任何属性(通常在构造函数中)。每个实例变量都可以使用“this.‘”访问。类的任何方法中的前缀。
https://stackoverflow.com/questions/55505710
复制相似问题