// В переменных объектов мы храним не значения, а ссылки.
var a = {x: 10}, b = {x: 20};
a = b;
b.x = 15;
console.log(a.x); // 15
a.x = 45;
console.log(b.x); // 45
// Любой объект в JS имеет связанный с ним объект, который называется его прототипом.
// Объект наследует все свойства прототипа и доступен через наш дочерний объект.
// Это называется наследование, основанное на прототипах. Это единственный тип наследования, который есть в JS.
var ObjectProto = {
name: "Sorax"
};
// Мы имеем доступ ко всем свойствам объекта
var object = Object.create(ObjectProto);
console.log(object.name); // Sorax
// Это нужно, если мы создаем много однотипных объектов, когда нужно прописывать одни и те же свойства.
var Person = {
constructor: function(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
return this;
},
greet: function() {
console.log("Hi, my name is " + this.name);
}
}
var person, anotherPerson, thirdPerson;
person = Object.create(Person).constructor("John", 35, "male");
anotherPerson = Object.create(Person).constructor("Jessica", 28, "female");
thirdPerson = Object.create(Person).constructor("Bruce", 38, "male");
console.log(person.name);
console.log(anotherPerson.age);
console.log(thirdPerson.name);
person.greet();
anotherPerson.greet();
thirdPerson.greet();
// Для того, чтобы определить является ли объект прототипом другого объекта етсь метод isPrototypeOf
console.log(Person.isPrototypeOf(person)); // true
// Наследование в ООП подразумевает создание дочерних классов, которые будут наследовать свойства и методы родительских классов.
var WebDeveloper = Object.create(Person); // сделаем его прототипом объекта Person
// Добавим новое свойство в конструктор
WebDeveloper.constructor = function(name, age, gender, skills) {
Person.constructor.apply(this, arguments);
this.skills = skills || [];
return this;
};
WebDeveloper.develop = function(){
console.log("Working...");
};
var developer = Object.create(WebDeveloper).constructor("Jack", 21, "male", ["html", "css", "js", "php", "mysql"]);
console.log(developer.skills); // Array [ "html", "css", "js", "php", "mysql" ]
developer.develop(); // Working...
console.log(developer.name); // Jack
developer.greet(); // Hi, my name is Jack
var a = {x: 10}, b = {x: 20};
a = b;
b.x = 15;
console.log(a.x); // 15
a.x = 45;
console.log(b.x); // 45
// Любой объект в JS имеет связанный с ним объект, который называется его прототипом.
// Объект наследует все свойства прототипа и доступен через наш дочерний объект.
// Это называется наследование, основанное на прототипах. Это единственный тип наследования, который есть в JS.
var ObjectProto = {
name: "Sorax"
};
// Мы имеем доступ ко всем свойствам объекта
var object = Object.create(ObjectProto);
console.log(object.name); // Sorax
// Это нужно, если мы создаем много однотипных объектов, когда нужно прописывать одни и те же свойства.
var Person = {
constructor: function(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
return this;
},
greet: function() {
console.log("Hi, my name is " + this.name);
}
}
var person, anotherPerson, thirdPerson;
person = Object.create(Person).constructor("John", 35, "male");
anotherPerson = Object.create(Person).constructor("Jessica", 28, "female");
thirdPerson = Object.create(Person).constructor("Bruce", 38, "male");
console.log(person.name);
console.log(anotherPerson.age);
console.log(thirdPerson.name);
person.greet();
anotherPerson.greet();
thirdPerson.greet();
// Для того, чтобы определить является ли объект прототипом другого объекта етсь метод isPrototypeOf
console.log(Person.isPrototypeOf(person)); // true
// Наследование в ООП подразумевает создание дочерних классов, которые будут наследовать свойства и методы родительских классов.
var WebDeveloper = Object.create(Person); // сделаем его прототипом объекта Person
// Добавим новое свойство в конструктор
WebDeveloper.constructor = function(name, age, gender, skills) {
Person.constructor.apply(this, arguments);
this.skills = skills || [];
return this;
};
WebDeveloper.develop = function(){
console.log("Working...");
};
var developer = Object.create(WebDeveloper).constructor("Jack", 21, "male", ["html", "css", "js", "php", "mysql"]);
console.log(developer.skills); // Array [ "html", "css", "js", "php", "mysql" ]
developer.develop(); // Working...
console.log(developer.name); // Jack
developer.greet(); // Hi, my name is Jack
Комментариев нет:
Отправить комментарий