Javascript 在构造函数中声明变量有什么用
我在学习Javascript中基于类的结构 至少可以说,我创建了一个简单的类Javascript 在构造函数中声明变量有什么用,javascript,Javascript,我在学习Javascript中基于类的结构 至少可以说,我创建了一个简单的类 class something { constructor() { var name = "somexyz" this.age = 13 } somefunc () { console.log(this.name)//Undefined console.log(name) //blank space console.log(this.age) //13 } }
class something {
constructor() {
var name = "somexyz"
this.age = 13
}
somefunc () {
console.log(this.name)//Undefined
console.log(name) //blank space
console.log(this.age) //13
}
}
然后使用
let foo = new something()
foo.somefunc()
上面代码的注释中提到了哪个consoles.log
1.未定义
2.空位
3.十三,
或者取一个构造函数
function something () {
this.age = 11
let age = 13
this.getAge = function () {
return this.age
}
}
这里,
let somethingNew = new something()
将以11岁的年龄返回
现在,我的问题是,在构造函数中使用变量的目的到底是什么 重点应该放在简单类上——局部变量的概念似乎毫无意义,但实际上非常有用 简单示例-重复使用变量时
class transport
{
constructor ()
{
const someString = "IUseThisAgainAndAgain";
this.type = 'someType';
this.name = 'someName';
this.serial = someString + "SOMETHING";
this.model = someString + "something thing";
this.example = someString + "another string concat";
}
}
正如你所看到的,我们经常使用一些字符串。你会看到一个巨大的构造函数方法,它为一个重复的实例提供了一个变量,这将允许更好的代码可读性,并允许你在一个地方轻松地修改实例。重点应该放在简单的类上-局部变量的概念看起来毫无意义,但实际上非常有用 简单示例-重复使用变量时
class transport
{
constructor ()
{
const someString = "IUseThisAgainAndAgain";
this.type = 'someType';
this.name = 'someName';
this.serial = someString + "SOMETHING";
this.model = someString + "something thing";
this.example = someString + "another string concat";
}
}
正如你所看到的,我们经常使用一些字符串。您将看到一个巨大的构造函数方法,它为一个重复的实例提供了一个变量,这将允许更好的代码可读性,并允许您在一个地方轻松地修改实例。您可以使用变量设置默认值,也可以用于检查或数学计算
例如:
类{
构造库{
var默认值_年龄=13;
ifage>13{
这个。年龄=年龄;
}否则{
this.age=默认年龄;
}
}
我的年龄{
console.logI am+此。年龄+岁。
}
}
var newobj=新事物15;
newobj.myage;
var newobj2=新事物8;
newobj2.myage 您可以使用变量设置默认值,也可以用于检查或数学计算
例如:
类{
构造库{
var默认值_年龄=13;
ifage>13{
这个。年龄=年龄;
}否则{
this.age=默认年龄;
}
}
我的年龄{
console.logI am+此。年龄+岁。
}
}
var newobj=新事物15;
newobj.myage;
var newobj2=新事物8;
newobj2.myage;
构造函数中的变量仅在构造函数的作用域中定义
在本例中,是全局范围中存在的字符串。在方法执行的当前作用域中找不到名称,它将被查找并上移到window.name。尝试用其他名称更改名称,例如:name2,您将得到一个错误。
有关somexyz的日志记录,请参见下面的代码段
当然,构造函数中的局部变量对于构造函数本身的逻辑应该是有用的
分类{
建造师{
var name=somexyz
var name2=somexyz
这个年龄=13岁
}
somefunc{
console.logthis.name//未定义
console.logname//window.name
console.logwindow.name//window.name
console.logthis.\uuuuu proto\uuuuu.constructor.name//something
console.logthis.age//13
}
}
让foo=新事物
foo.somefunc
构造函数中的变量仅在构造函数的作用域中定义
在本例中,是全局范围中存在的字符串。在方法执行的当前作用域中找不到名称,它将被查找并上移到window.name。尝试用其他名称更改名称,例如:name2,您将得到一个错误。
有关somexyz的日志记录,请参见下面的代码段
当然,构造函数中的局部变量对于构造函数本身的逻辑应该是有用的
分类{
建造师{
var name=somexyz
var name2=somexyz
这个年龄=13岁
}
somefunc{
console.logthis.name//未定义
console.logname//window.name
console.logwindow.name//window.name
console.logthis.\uuuuu proto\uuuuu.constructor.name//something
console.logthis.age//13
}
}
让foo=新事物
foo.somefunc仅用于局部计算。这将创建实例数据--作为所创建对象实例一部分的数据。让、var和const创建不随实例存储其数据的常规变量,因此您无法从实例变量访问其信息。它们是作为创建私有数据的方式存在的。仅用于本地计算。这将创建实例数据--是您创建的对象实例的一部分的数据。让、var和const创建不随实例存储其数据的常规变量,因此您无法从实例变量访问其信息。它们作为创建私有数据的方式存在。