Разницы нет что с return this (я так понимаю это ссылка на объект класса)
Если убрать return this, без него также работает код, причем одинаково.
Почему во втором console.log не происходит вывод 18? Ведь я передал через конструктор аргумент 18.
Здесь решил попробовать наследование.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Тест</title>
</head>
<body>
<p id="result"></p>
<script>
let Person =function(name,age,gender){
this.name = name;
this.age = age;
this.gender = gender;
// return this;
};
Person.prototype.greet= function(){
console.log("My name is " + this.name);
};
let Son = function(age,skils){
this.skils = skils || [];
Person.apply(this,arguments)
}
Son.prototype = Object.create(Person.prototype);
Son.prototype.constructor = Son;
let a = new Person("Петя",25,"female");
let b = new Son(18,["рисует","поет","водит"]);
console.log(a.age);
console.log(b.age + b.skils);
</script>
</body>
</html>