1、不是原型链继承,只是借用构造函数,所以不能继承原型的属性和方法。
2、虽然构造函数中定义的属性和方法是可以访问的,但是每个实例都被复制了。
如果例子太多,方法太多,占用内存很大,那么方法就在构造函数中定义,函数的复用就无从谈起。
实例
//父构造函数 functionFather(){ this.name='father' this.speakName1=function(){ console.log('speakName1') } this.speakName2=function(){ console.log('speakName2') } this.speakName3=function(){ console.log('speakName3') } this.speakName4=function(){ console.log('speakName4') } } //父原型上方法 Father.prototype.alertName=function(){ console.log(this.name) } //父原型上属性 Father.prototype.age=21 //子构造函数 functionChildren(){ Father.call(this) } //创建子实例 letc1=newChildren() //调用原型方法,实例访问不到 c1.alertName() //TypeError:c1.alertNameisnotafunction //访问原型属性,实例中未定义 console.log(c1.age) //undefined //可以访问实例属性,但是每个实例都存有自己一份name值 console.log(c1.name) //father //可以访问实例方法,但是每个实例都存有自己一份speakName1()方法, //且方法过多,内存占用量大,这就不叫复用了 c1.speakName1()//speakName1 c1.speakName2()//speakName2 c1.speakName3()//speakName3 c1.speakName4()//speakName4 //instanceofisPrototypeOf无法判断实例和类型的关系 console.log(Father.prototype.isPrototypeOf(c1))//false console.log(c1instanceofFather)//false
以上就是js使用构造函数的缺点,希望对大家有所帮助。更多js学习指路:js教程
原文来自:https://www.py.cn© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容