Во -первых, определите объект obj, а прототип объекта - OBJ._Proto_. Мы можем использовать метод GetPrototypoF в ES5, чтобы запросить прототип OBJ. Мы доказываем, равен ли прототип OBJ. Прототип, чтобы доказать, существует ли прототип OBJ. Ответ возвращается правдой, поэтому он существует. Затем мы определяем функцию foo (), и любая функция имеет свой объект прототипа, то есть прототип функции. Мы можем добавить любые атрибуты к прототипу функции, а затем поделиться его атрибутами с помощью нового создания объекта (подробно будут введены следующие два примера).
function foo () {} foo.prototype.z = 3; var obj = new foo (); obj.x = 1; obj.y = 2; obj.x //1obj.y //2obj.z // 3typeof obj.toString; //functionobj.valueof (); // foo {x: 1, y: 2, z: 3} obj.hasownproperty ('z'); //ЛОЖЬЗдесь прототип OBJ (_proto_) указывает на свойство прототипа функции Foo, прототип Foo.Prototype указывает на объект. Прототип, а конец цепочки прототипа нулевой. Через HasownProperty мы можем проверить, находится ли свойство Z на OBJ. Он показывает ложь. На OBJ нет свойства Z, но, искавая ее прототипную цепочку, мы обнаружили, что она находится на foo.prototype, поэтому obj.z = 3, и для первого случая obj.valueof () и tostring на объекте. Конечно, за исключением следующего специального случая,
var obj2 = object.create (null); obj2.valueof (); //неопределенный
Object.Create () создает пустой объект, а прототип этого объекта указывает на параметры. В следующем комплексном примере показано, как внедрить класс, чтобы унаследовать другой класс
// объявить личность конструктора (имя, возраст) {this.name = name; this.age = age;} person.prototype.hi = function () {console.log ('hi, мое имя « +this.name +', мой возраст" +this.age);}; person.prototype.legs_num = 2; person.prototype.arms_num = 2; person.prototype.walk = function () {cons. ! ');}; функция студента (имя, возраст, класснум) {person.call (это, имя, возраст); this.classnum = classnum;} // Создание пустого объекта Student.prototype = object.create (person.prototype); // Конструктор Определяет функцию для создания объекта. Student.prototype.constructor = Student; Student.prototype.hi = function () {console.log ('Привет, мое имя «+this.name+', мой возраст"+this.age+', а мой класс -'+this.classnum);}; student.prototype.learns = function (subsole) {console.log (это. '+sub);}; // создание объекта bosnvar bosn = new Student (' bosn ', 27,' class 3 '); bosn.hi (); // Привет, меня зовут Босн, мой возраст 27, а мой класс - класс 3bosn.legs_num; //2bosn.walk (); // Bosn ходит! Bosn.learns ('Math'); // Босн изучает математикуКонструктор -человек и эта точка студента на создание объекта (BOSN) и прототип этого объекта указывает на прототип конструктора.
Мы используем метод object.create () для создания пустого объекта, а прототип этого объекта - Person.prototype. Преимущество написания этого заключается в том, что мы можем создавать любой атрибут studnet.prototype сами, не влияя на атрибут человека. Прототип, и можем унаследовать исходные атрибуты на Person.prototype, потому что ученик подкласса наследует человека базового класса. Если вы пишете Person.prototype = Student.Prototype напрямую, то оба они указывают на объект одновременно. При добавлении атрибутов к студенту.
Для метода вызовов у студента конструктора этот внутри указывает на создание объекта вновь созданного студента и наследуется через вызов.
Student.prototype.constructor = Студент, значение этого предложения состоит в том, чтобы указать, что студент - это функция, которая создает студент. Прототип объект. Если вы не пишете это предложение, функция объекта все еще остается человеком.
Есть три способа реализации наследования.
Функция человека (имя, возраст) {this.name = name; this.age = age;} function student () {} Student.prototype = person.prototype; //1student.prototype = object.create (person.prototype); //2student.prototype = new Person (); // 3Вышеуказанная цепочка прототипа JS и анализ наследования (первый опыт) - это весь контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.