您现在的位置是:课程教程文章

js使用构造函数的缺点

2023-12-13 23:02课程教程文章 人已围观

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教程

推荐操作环境:windows7系统、jquery3.2.1版本,DELL G3电脑。

课程教程:js使用构造函数的缺点

上一篇:如何走进Python的大门?

下一篇:没有了

站点信息

  • 文章统计篇文章