我正在学习 JavaScript,但对它的 Object 概念感到困惑。我曾经是一名 Java 程序员,我很害怕 JavaScript 没有类。根据我目前所学到的,函数可以替换 JavaScript 中的类。new
并且您可以使用如下所示的 ' ' 关键字来实例化该函数。
function person() {
var name;
this.tellYourName = function() {
return 'My name is ' + name;
}
this.setName = function(newName) {
name = newName;
}
}
var person1 = new person();
person1.setName('Chris');
alert(person1.tellYourName());
在上面的代码中,我创建了一个对象“person1”,它继承了 person 函数的属性。
所以这是我的问题。person() 是一个对象吗?我所说的对象是指它person()
是一个类还是一个实例化的对象。
我在研究闭包时对这个概念感到困惑。这是示例代码
function closureTest(a) {
return function(b) {
return a + b;
}
}
var test = closureTest(1);
alert(test(2));
在这里,我猜closureTest 函数作为方法而不是类工作。并且var test = closureTest(1);
行没有使用' new
'关键字。这意味着测试变量将存储来自的返回值,closureTest(1);
但是正如您所看到的,测试变量被用作closureTest
. 这怎么可能?因为当我用下面的测试代码尝试它时
function test(a) {
return a;
}
var t = test(2);
alert(t);
按照我的预期打印出测试函数的返回值。
我希望我的问题不会太混乱。我目前从 Java 迁移到 JavaScript,我认为它们几乎相同的想法都是错误的。我读了几篇关于 JavaScript 中对象概念的讲座,但它变得更加混乱。感谢您花时间阅读本文,希望我能从您那里得到一些东西:)