我正在用Java语言研究基于类的结构
至少可以说,我创建了一个简单的类
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. 13
或采用构造函数
function something () {
this.age = 11
let age = 13
this.getAge = function () {
return this.age
}
}
在这里
let somethingNew = new something()
将返回11岁的年龄
现在,我的问题是,在构造函数中具有变量的目的是什么?
答案 0 :(得分:2)
重点应该放在“简单类”上-局部变量的概念似乎毫无意义,但实际上非常有用。
简单示例-重复使用变量
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";
}
}
如您所见,我们大量使用someString
。而且您会看到构造函数方法很大,并且对于重复的实例具有变量将使代码具有更好的可读性,并使您可以轻松地在一个地方修改实例。
答案 1 :(得分:1)
您还可以使用变量设置默认值,也可以用于检查或数学计算。
例如:
class something {
constructor(age) {
var default_age = "13";
if(age > 13){
this.age = age;
}else{
this.age = default_age;
}
}
myage() {
console.log("I am "+this.age+" years old.")
}
}
var newobj = new something(15);
newobj.myage();
var newobj2 = new something(8);
newobj2.myage();
答案 2 :(得分:1)
var
中的constructor
只在构造函数的范围内定义""
是global scope
中存在的字符串。在方法执行的当前范围内找不到name
,发现它已上移到window.name
。尝试使用其他名称(例如:name2
)更改名称,您会收到错误消息。"somexyz"
的信息,请参见下面的代码段
class something {
constructor() {
var name = "somexyz"
var name2 = "somexyz"
this.age = 13
}
somefunc () {
console.log(this.name)//undefined
console.log(name) //window.name
console.log(window.name) //window.name
console.log(this.__proto__.constructor.name) //"something"
console.log(this.age) //13
}
}
let foo = new something()
foo.somefunc()