手写jQuery框架

匿名 (未验证) 提交于 2019-12-02 21:53:52

下面的案例使用了原型链继承的方法,实现了Student 继承 Person

    /**1.父亲构造器函数*/     function Person(name) {      }      /**2.子构造器函数*/     function Student() {      }      /**3.设计原型链继承*/     Student.prototype=new Person();     /**4.修改原型对象中constructor属性指向*/     Student.prototype.constructor=Student;      /**5.创建Student对象*/     var student=new Student();

1.从上图可以看出student对象是通过Student构造器函数实例化的。

2.Student构造器函数的原型对象 和 student对象的原型是person对象

3.Student构造器函数的原型对象的构造器函数是Student构造器函数

1.Student构造器函数的原型对象 是 person对象( 即 Student.prototype )

2.person对象( 即 Student.prototype )是通过Person构造器函数实例化的

    /**1.父亲构造器函数*/     function Person(name) {     }      /**2.子构造器函数*/     function Student() {     }      /**3.设计原型链继承*/     Student.prototype=new Person();     /**4.修改原型对象中constructor属性指向*/     Student.prototype.constructor=Student;      /**5.创建Student对象*/     var student=new Student();      console.log(Student.prototype);//是person对象(通过Person实例化)     console.log(Student.prototype.constructor);//是Student的构造函数      console.log(Person.prototype);//是Object对象(通过Object实例化)     console.log(Person.prototype.constructor);//是Person的构造函数

控制台输出:

1.Person构造器函数的原型对象 是object 对象( 即 Person.prototype )

2.object 对象( 即 Person.prototype )是 通过Object构造函数实例化出来

3.Object构造器函数的原型对象 和 object对象(即 Person.prototype) 的原型是Person.prototype_proto_对象( 其实这个也是一个object对象)

    /**1.父亲构造器函数*/     function Person(name) {     }      /**2.子构造器函数*/     function Student() {     }      /**3.设计原型链继承*/     Student.prototype=new Person();     /**4.修改原型对象中constructor属性指向*/     Student.prototype.constructor=Student;      /**5.创建Student对象*/     var student=new Student();  //    console.log(Student.prototype);//是person对象(通过Person实例化) //    console.log(Student.prototype.constructor);//是Student的构造函数  //    console.log(Person.prototype);//是Object对象(通过Object实例化) //    console.log(Person.prototype.constructor);//是Person的构造函数      console.log(Object.prototype);//是Object对象(通过Object实例化)     console.log(Object.prototype.constructor);// 是Objectg构造函数     console.log(Object.prototype.__proto__);//null

控制输出:

1.Object构造函数的原型对象 是一个object对象( 即 Object.prototype)

2.object对象( 即 Object.prototype) 的constructor属性的是Object构造函数

3.object对象( 即 Object.prototype) 是通过Object构造函数实例化出来的

4.object对象( 即 Object.prototype) 的原型的是null

思考:在js中函数也是对象, 那么Student构造器函数这个对象是谁实例化出来的 ?

1.控制台打印Student构造器函数这个对象相关的属性

2.控制台 输出:

1.Student构造器函数也是一个对象

2.Student构造器函数这个对象是通过Function构造函数实例化出来的

3.Student构造器函数这个对象 的构造器是Function构造函数

4.Student构造器函数这个对象._proto_是一个空函数

5.Function构造函数 的原型对象是空函数

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>Title</title> </head> <body> <script>     /**1.父亲构造器函数*/     function Person(name) {     }      /**2.子构造器函数*/     function Student() {     }      /**3.设计原型链继承*/     Student.prototype=new Person();     /**4.修改原型对象中constructor属性指向*/     Student.prototype.constructor=Student;      /**5.创建Student对象*/     var student=new Student();      console.log(Function.prototype.constructor); // 空函数Function.prototype也是一个对象,这个对象是通过谁创建的?通过Function构造函数     console.log(Function.prototype.__proto__);// 空函数也是一个对象,这个对象的原型是谁? 是 object对象      console.log(Function.prototype.__proto__ === Object.prototype);//空函数的原型对象是Object的原型对象 </script> </body> </html>

查看控制台输出:

1.空函数也是一个对象

2.空函数这个对象的构造器函数是 Function构造器函数,所以空函数对象也是通过Function构造函数实例化出来的 .

3.空函数这个对象 的原型._proto_ 是 Object构造器函数的原型对象

思考:Function构造函数也是一个对象? 那么Function是谁实例化的? 它的._proto_对象是?

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>Title</title> </head> <body> <script>     /**1.父亲构造器函数*/     function Person(name) {     }      /**2.子构造器函数*/     function Student() {     }      /**3.设计原型链继承*/     Student.prototype=new Person();     /**4.修改原型对象中constructor属性指向*/     Student.prototype.constructor=Student;      /**5.创建Student对象*/     var student=new Student();      console.log(Function.constructor);//Function也是一个对象,是谁实例化?是Function构造函数     console.log(Function.__proto__); // 是空函数: function(){} </script> </body> </html>

控制台输出结果:

1.Function构造器函数也是一个对象

2.Function构造器函数这个对象 的构造器函数是自身 Function构造器函数

3.Function构造器函数这个对象的原型._proto_空函数

结论:所有的对象都是继承Object对象。

文章来源: 手写jQuery框架
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!