设置“this.name = name;”的目的是什么?在JavaScript?

时间:2017-01-19 15:26:09

标签: javascript class object

我不确定为什么这是必要的。如果我正在接受“名称”参数,如果没有先将其设置为“this.name”,为什么不能将其作为“名称”引用?

原谅我的无知,我是新人。

function Animal(name, numLegs) {
    this.name = name;
    this.numLegs = numLegs;
}

Animal.prototype.sayName = function() {
    console.log("Hi my name is " + this.name);
};

4 个答案:

答案 0 :(得分:1)

this.name表示实例变量,而name变量是函数范围内的参数(在本例中为构造函数)。

通过此分配,将局部变量的值分配给实例变量。

答案 1 :(得分:0)

这不是一个javascript的东西,它是一个OOP的东西。您希望将对象的属性与其他范围隔离。

var Animal = function(name) {
    this.name = name;
};
var name = "foo";
var dog = new Animal("bar");
// shows "foo"
console.log(name);
// shows "bar"
console.log(dog.name);

答案 2 :(得分:0)

使用代词“他”。我们可以这样写:“约翰跑得快,因为约翰试图赶上火车。”我们不会以这种方式重复使用“约翰”。以类似的优雅方式,在JavaScript中,我们使用this关键字作为快捷方式,指示对象;它指的是一个物体;也就是说,上下文中的主题,或执行代码的主题。考虑这个例子:

var person = {
    firstName: "Penelope",
    lastName: "Barrymore",
    fullName: function ()
        ​// Notice we use "this" just as we used "he" in the example sentence earlier?:​
        console.log(this.firstName + " " + this.lastName);
    ​    // We could have also written this:
        console.log(person.firstName + " " + person.lastName);
    }
}

答案 3 :(得分:0)

嗯......你正在使用一个对象构造函数和原型,而不仅仅是一个带有两个参数的函数,例如:

function Animals(pet1, pet2) {
    var pets = "first pet " + pet1 + " second pet " + pet2;
    console.log(pets);
}
Animals("Tiger", "Lion");

所以引用您的参数为' this.name'如果你知道我的意思,是sayName()的原型。 FOR MORE.