总结javascript继承的两种方式的N中写法
2015-10-31 10:04
597 查看
最近翻看博客园,总结了一下javascript的继承方式:prototype和copy继承方式。
而constructor便是该新函数对象(constructor意义不大,但是可以帮我们找到继承关系)
每个函数都会有一个prototype属性,该属性指向另一对象,这个对象包含可以由特定类型的所有实例共享的属性和方法
每次实例化后,实例内部都会包含一个[[prototype]](__proto__)的内部属性,这个属性指向prototype
(以上图片取自叶小钗博客)
至于哪种方式更好,完全取决于自己的意愿。
jquery使用的就是深拷贝~
一、prototype方式
当一个函数被创建时,Function构造函数产生的函数会隐式的被赋予一个prototype属性,prototype包含一个constructor对象而constructor便是该新函数对象(constructor意义不大,但是可以帮我们找到继承关系)
每个函数都会有一个prototype属性,该属性指向另一对象,这个对象包含可以由特定类型的所有实例共享的属性和方法
每次实例化后,实例内部都会包含一个[[prototype]](__proto__)的内部属性,这个属性指向prototype
(以上图片取自叶小钗博客)
二、copy方式
function extend(child,parent)//通过临时构造器继承 { var f=function(){}; f.prototype=parent.prototype; child.prototype=new f(); child.prototype.constructor=child; child.uber=parent.prototype;//uber 类似其他语言里的SuperClass } function extend2(child,parent)//传递superclass { var c=child.prototype; var p=parent.prototype; for(var v in p) { c[v]=p[v]; } child.uber=parent.prototype; } function extendcopy(parent) { var temp={}; for(var t in parent) { temp[t]=parent[temp]; } temp.uber=parent; return temp; } function deepcopy(child,parent) { var c=child||{}; for(var t in parent) { if(typeof parent[t]==="object") { c[t]=(parent[t].constructor==="Array")?[]:{}; deepcopy(c[t],parent[t]); } else { c[t]=parent[t]; } } return c; } function objectextend(o) { function f(){}; f.prototype=o; return new f(); } function objectextend2(o) { function f(){}; f.prototype=o; var n=new f(); n.uber=o; return n; } function extendcopyplus(o,stuff) { function f(){}; f.prototype=o; var n=new f(); n.uber=o; for(var t in stuff) { n[t]=stuff[t]; } return n; }
至于哪种方式更好,完全取决于自己的意愿。
jquery使用的就是深拷贝~
相关文章推荐
- 超实用的JavaScript代码段 Item2 --伸缩菜单栏
- 超实用的JavaScript代码段 Item2 --伸缩菜单栏
- 超实用的JavaScript代码段 Item1 --倒计时效果
- JavaScript中的delete,typeof,instanceof运算符
- 超实用的JavaScript代码段 Item1 --倒计时效果
- JavaScript学习2-BOM
- js onerror的用法
- JS实现的简单鼠标跟随DiV层效果完整实例
- js 数组排序
- JavaScript 学习之Event对象
- JSON和XML的比较
- js 设置读取cookie
- JavaScript对象属性
- 特殊字符导致json字符串转换成json对象出错
- JS 数字格式千分位相互转换
- JavaScript学习之自定义对象
- jsp小结02 - JSP注释、声明、表达式、脚本
- jsp小结01 - JSP基本原理和特性
- js 数组去除的几种方法
- JS--WIKI