js使用构造函数的缺点有哪些
这篇文章主要介绍js使用构造函数的缺点有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联建站长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为海西企业提供专业的成都网站设计、成都网站制作,海西网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。
1、不是原型链继承,只是借用构造函数,所以不能继承原型的属性和方法。
2、虽然构造函数中定义的属性和方法是可以访问的,但是每个实例都被复制了。
如果例子太多,方法太多,占用内存很大,那么方法就在构造函数中定义,函数的复用就无从谈起。
实例
// 父构造函数 function Father() { 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 // 子构造函数 function Children() { Father.call(this) } // 创建子实例 let c1 = new Children() // 调用原型方法,实例访问不到 c1.alertName() // TypeError: c1.alertName is not a function // 访问原型属性,实例中未定义 console.log(c1.age) // undefined // 可以访问实例属性,但是每个实例都存有自己一份 name 值 console.log(c1.name) // father // 可以访问实例方法,但是每个实例都存有自己一份 speakName1() 方法, // 且方法过多,内存占用量大,这就不叫复用了 c1.speakName1()// speakName1 c1.speakName2()// speakName2 c1.speakName3()// speakName3 c1.speakName4()// speakName4 // instanceof isPrototypeOf 无法判断实例和类型的关系 console.log(Father.prototype.isPrototypeOf(c1))// false console.log(c1 instanceof Father)// false
以上是“js使用构造函数的缺点有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
文章标题:js使用构造函数的缺点有哪些
网页链接:http://pwwzsj.com/article/pdgpoi.html