千家信息网

js使用构造函数的缺点有哪些

发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章主要介绍js使用构造函数的缺点有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、不是原型链继承,只是借用构造函数,所以不能继承原型的属性和方法。2、虽然构造函数中
千家信息网最后更新 2025年01月16日js使用构造函数的缺点有哪些

这篇文章主要介绍js使用构造函数的缺点有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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))// falseconsole.log(c1 instanceof Father)// false

以上是"js使用构造函数的缺点有哪些"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

0