构造函数也能创建对象,
但是书上一定说什么用原型继承来创建对象,
但是实际上我看了,也是用构造函数来创建了对象,
只是多了个prototype的属性,我看不出来原型很构造函数的区别,书上说原型是个对象,用这个对象的继承来创建对象速度会快,
高人指点,原型和构造函数区别到底是什么?
但是书上一定说什么用原型继承来创建对象,
但是实际上我看了,也是用构造函数来创建了对象,
只是多了个prototype的属性,我看不出来原型很构造函数的区别,书上说原型是个对象,用这个对象的继承来创建对象速度会快,
高人指点,原型和构造函数区别到底是什么?
在javascript中所有的函数、对象都有原型对象,包括构造函数也有原型对象(函数在js中也是对象)。原型式集成的原理是:对象的构造函数可以从其他对象中继承方法,它创建出一个原型对象后,所有其他的新对象都可以基于这个原型对象来构建。而整个过程都是通过prototype这个属性来实现的。
p.s. 你读的是什么javascript的书啊,建议你读好一点js方面书, 推荐《精通javascript》,John Resig写的,jquery的创始人。
就比如 function pen()
{.......}然后 var pen1=new pen();
这个意思
想问的是LZ拿这个构造函数和prototype进行什么对比??
使用prototype是
function pen()
{.......}pen.prototype.xxx = function (){};var pen1=new pen();
只有和
function pen()
{
this.xxx = function (){};
}var pen1=new pen();
才有可比性
{
this.xxx = function (){};
}
以上应该称为构造函数吧,那么prototype因该是原型吧,这两个有什么区别?
这样写对吗?
左边是属性,右边是构造函数吧?
{
this.xxx = function (){};
}var pen1=new pen();在pen的原型prototype中增加一个叫xxx的属性,该属性是个函数,pen1为pen的实例化对象,继承了xxx属性:function pen()
{.......}pen.prototype.xxx = function (){};var pen1=new pen();
function pen()
{
//通过构造函数赋值,只是单纯的在该实例化对象上增加一个属性,各个实例化对象的该同名属性各不相同
this.xxx = function (){alert("xxx")};
}//yyy通过prototype赋值,实例化pen后的对象(pen1,pen2)的yyy属性都是同一个函数,但是作用域不同
pen.prototype.yyy = function (){alert(this===pen1)};var pen1=new pen();
var pen2=new pen();pen1.xxx();//xxx
pen1.yyy();//truepen2.xxx();//xxx
pen2.yyy();//falsealert(pen1.xxx === pen2.xxx);//false
alert(pen1.yyy === pen2.yyy);//true