2017-01-19 3 views
-2

Я не совсем уверен, почему это необходимо. Если я беру параметр «имя», почему его нельзя называть «имя», не устанавливая при этом значение «this.name»?Какова цель установки «this.name = name;» в JavaScript?

Простите мое невежество, я новичок.

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

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

Это не предмет javascript, это вещь ООП. Вы хотите оставить свойства объекта, изолированного от других свойств. – mk2

+2

'name' является аргументом локальной функции для' Animal'. Он не будет доступен нигде вне этой функции. Если вы хотите, чтобы 'sayName' имел доступ к этому значению, он должен быть сохранен где-то, которое разделяется между обеими функциями →' this'. – deceze

+0

@deceze А это имеет смысл. Я действительно не понимал, что такое «это». Спасибо друг. – MikeyH

ответ

0

this.name представляет собой переменный экземпляр в то время как переменная name является параметром, который находится в области действия функции (конструктора в данном случае).

С помощью этого назначения значение локальной переменной присваивается переменной экземпляра.

0

Это не предмет javascript, это вещь ООП. Вы хотите оставить свойства объекта, изолированного от других областей.

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); 
0

Как использование местоимения «он». Мы могли бы написать это: «Джон бежит быстро, потому что Иоанн пытается поймать поезд». Мы не используем «Джон» таким образом. Подобным грациозным образом в JavaScript мы используем это ключевое слово как ярлык, референт; это относится к объекту; то есть субъекта в контексте или предмета исполняемого кода. Рассмотрим следующий пример:

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); 
    } 
} 
0

... Ну вы работаете с конструктором объекта и прототипа не только функцию с двумя параметрами, где пример:

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

так ссылки на ваш параметр, как «это. name 'является прототипом sayName(), если вы знаете, что я имею в виду. FOR MORE.

Смежные вопросы