您现在的位置是:首页 > Javascript
当前栏目
js使用构造函数的缺点
2023-03-20 14:45:25 时间
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学习指路:js教程
推荐操作环境:windows7系统、jquery3.2.1版本,DELL G3电脑。
相关文章
- TiDB Binlog 组件正式开源
- 使用Visual Studio Code对Node.js进行断点调试
- 推荐!数据可视化的十种优秀JavaScript图表库
- Node.js在复杂集成场景下占据统治地位的五个理由
- 玩转Node.js单元测试
- Node.js中内存泄漏分析
- Angular对React:一场关于Web开发者支持率的史诗对决
- 热点推荐:什么是后端开发?
- 谈谈Spring boot 启动层面的开发
- 使用NodeJS将文件或图像上传到服务器
- 编写React组件的最佳实践
- JavaScript MV*框架最值得关注的七个亮点
- 前端开发指南:如何利用PHP Cake框架构建应用
- 基于React与Vue后,移动开源项目Weex如何定义未来
- NodeJS和C++之间的类型转换
- jQuery中的常用到的三十九个技巧
- 官宣|Google Developers中国网站发布!
- NodeJS和C++之间的类型转换
- .NET Core首例Office开源跨平台组件(NPOI Core)
- 如何写出漂亮的React组件