构造函数 原型对象 实例三者关系
每一个构造函数都有一个原型对象
在构造函数内有prototype属性指向它的原型对象
在原型对象中有constructor属性指向它对应的构造函数
在原型对象中有一些属性和方法,是公用的,实例可以调用
实例是通过构造函数创建出来的对象
var obj = new Object();
Object.prototype.constructor === Objectobj.constructor === Object
Object.prototype.isPrototypeOf(obj) true
所有的函数都继承自对象
说一下对构造函数,原型,实例的理解/谈一谈原型,原型链?(同程面试题)
1.每一个构造函数中都有一个原型对象
2.每一个Object构造函数有一个prototype属性 prototype属性的内存地址指向Object构造函数的原型对象prototype
3.同时prototype原型对象中有一个constructor方法指向Object构造函数
4.obj实例中并没有写toString()和valueOf()方法,可是它可以调用,是因为obj实例可以继承Object构造函数原型对象的方法来使用。(从原型链来继承)
5.obj实例可以使用它的构造函数的原型对象中的实例和方法,为什么?
将Object构造函数比作目前,其产生的原型对象比作父亲,实例是儿子(由母亲产生 也就是OBject构造函数,obj由new Object()产生),这样理解,儿子可以用父亲所拥有的东西。儿子什么都没有,但是儿子可以问父亲要。
据关系图理解,obj实例内有name属性,age属性,除了可以访问这两个属性,它还可以访问toString(),valueOf()。