我正在学习JavaScript,对它的对象概念感到困惑。我以前是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
'关键字。这意味着test变量将存储closureTest(1)
的返回值。但是你会发现,test变量被用作closureTest
的对象。这是怎么可能的?因为当我尝试下面的测试代码时:
function test(a) {
return a;
}
var t = test(2);
alert(t);
按照我的期望,它打印出了测试函数的返回值。
我希望我的问题不会太令人困惑。我目前从Java转到JavaScript,以为它们几乎相同,但是这种想法是错误的。我阅读了几篇关于JavaScript中对象概念的讲座,但情况变得更加混乱。感谢您花时间阅读这篇文章,希望能从您那里得到一些东西 :)