为什么不需要在构造函数中指定变量?

时间:2014-05-28 10:29:54

标签: javascript constructor

我正在学习javascript,在构造函数中没有var声明,只是get和set方法。谁能告诉我为什么?我认为应该有像var name这样的声明;在构造函数中?

<script>
function Person(name){
    this.getName=function(){
        return name;
    };

    this.setName=function(value){
        name=value;
    };
}
</script>

为什么不放

var name

在构造函数中?

3 个答案:

答案 0 :(得分:1)

因为函数参数已经在范围内而您不想通过undefined覆盖参数?

请参阅What is the scope of variables in JavaScript?了解有关范围的更多信息

答案 1 :(得分:1)

function Person(name){
    this.getName=function(){
        return name;
    };

    this.setName=function(value){
        name=value;
    };
}

因为name已经成为Person函数的范围,因为它是Person的参数

你不需要(并且不应该)写var name

答案 2 :(得分:0)

如果要更改现有对象的名称,则实现

setName方法。 e.g:

function Person(name){
    this.getName=function(){
        return name;
    };

    this.setName=function(value){
        name=value;
    };
}

var tom = new Person("tom");
var harry = new Person("harry");

所以如果你想让汤姆有新名字你必须打电话

tom.setName("Dick");

在此之后

tom.getName();

将返回&#34; Dick&#34;。

祝你好运。