对原型prototype的理解(prototype指什么)
JavaScript里面的prototype是什么意思?
prototype是原型的意思,也就是JS对象的原型,一般用来扩展原型的时候用.
prototype是一个属性,所有的函数都有,这个属性引用了一个对象.prototype对象是实现面向对象的一个重要机制.每个函数都是一个对象,它们对应的类就是function,每个函数对象都具有一个子对象prototype,prototype表示了该函数的原型.
Js原型(prototype)01
1.原型是 function对象的一个属性,是构造函数构造出对象的公有祖先,而原型本身也是一个对象。
2.从原型的概念出发,我们可以用构造函数构造出的对象提取原型上的属性。
3.因为原型也是一个对象,所以原型本身对自己的属性有增删改查的权利。
4.对象如何知道自己的原型是谁,可以通过对象中的_ proto_ 属性查看,_ proto_ 属性存的就是对象的原型,他是作为对象与原型之间的连接。
5.构造函数构造的对象如何查看是谁构造出自己的,可以通过constructor属性
首先从原型的定义开始解释:
原型是function对象的一个属性,这句话如何理解?
1.function函数其实就是一个对象,当你构造出一个函数时,这个函数对象就有了自己隐式的属性,prototype就是其中的一个属性。
那么先构造出一个函数,在控制台查看,函数对象是否有prototype,并且prototype是否也是一个对象。
我们在控制台中给father的prototype属性添加name属性并赋值,看看是否有效?
给prototype添加属性后,并可以输出name的值。那么也是可以给prototype添加方法的。
给prototype添加say方法实现输出自己的name,执行say(),的确输出了'haha'
2.我们如何理解,prototype是构造函数构造出对象的公有祖先?
首先当构造出函数时prototype就成为了这个函数的属性,并且prototype也可以添加属性和方法,而构造函数构造出的对象能继承构造函数中的方法,且这个对象自身也能添加属性和方法?
那么问题来了?
当我查看对象的name属性时,对象并没有这个属性,那他就会自动去构造出自己的函数中去找是否有这个属性,那当构造函数也没这个属性时,他就会去自己的原型上查找是否有这个属性,如果原型上存在name属性,对象就会获取到这个属性并输出。
而这个获取到原型属性的过程,其实就是一种继承的方式。
举例:
1.prototype是function对象的一个属性;
2.prototype是构造函数构造出对象的公有祖先;
3.prototype也是一个对象。
从总结的第三点可以知道,prototype可以拥有自己的属性和方法,并有权进行增删改查,那么接下来展示prototype如何进行增删改查。
对Mom的prototype属性进行操作。
增:
给出你想要添加的属性,并赋值。
删:
delete
所以prototype对象的增删改查和普通对象的用法相同。
这里还需注意,prototype上的属性只能由自身操作,对象从prototype上获取到的属性进行操作后,并不会影响到prototype。
接下来解释对象的_ proto_ 属性(前后分别是两个_)
_ proto_ 属性里存的是对象的prototype
举例:
接下来解释constructor属性:
对象可以通过该属性查看构造出自己的函数
总结:
prototype是function对象的一个属性,是构造函数构造出的对象的公有祖先,他本身也是一个对象,所以他可以有自己的属性和方法,并对其进行增删改查的操作,对象没有权利修改prototype上的属性和方法。对象可以通过自己的_ proto_ 查看他的prototype,通过constructor查看构造出自己的函数。
js中的原形prototype 到底是什么?有什么用?有没有代码说明一下
原型对象prototype可以这么理解,是该类的实例对象的模板,每个实例对象都是先复制一份该类的prototype,通过这个可以让类的实例拥有相同的功能
String.prototype.say=function(){
alert(this);
};
"test".say();
这样就给String类的实例对象添加了一个方法,当然也可以添加其他的属性、方法。
通过prototype可以让js模拟面向对象的功能
js中的prototype
prototype 翻译过来是原型的意思,在 js 中特指对象的原型
prototype 对象是 js 实现面向对象的一个重要机制
每个函数也是一个对象(划重点),他们对应的类是 function ,每个函数对象都有一个子对象 prototype
prototype 代表了该函数的原型,还表示了一个类的属性的集合
当用 new 来生成一个对象时, prototype 对象的属性将会成为实例化的对象的属性
使用场景:
我们把所有方法都放在一个函数内部,每一次通过 new 一个对象的时候,新创建的对象都会对类的 this 上的属性进行复制,所以这些新创建的对象都会有自己的一套方法,这样做对内存消耗很大,我们可以通过原型的方式去处理