位置: 编程技术 - 正文
Javascript的继承和标准的oop继承有很大的区别,Javascript的继承是采用原型链的技术,每个类都会将“成员变量”和“成员函数”放到 prototype 上,Js++都过superclass将其链接起来,即 C.prototype.superclass = C.superclass = P.prototype;当 var c = new C()时,c.__proto__ = C.prototype ;当 c访问“成员变量”时,如果在__proto__无法获取时,就会到C.prototype查找,如果又不存在,又会到父类的prototype查找,由于只有 __proto__ 是对象创建时分配的(每个对象独立分配),其他都是定义时分配的(每个对象共享),此时,如果访问C.prototype中“成员变量”是对象时,不修改“成员变量”的本身,而是修改“成员变量”对象的成员时,修改的“成员变量”对象的成员就会被所有对象实例共享,这样就违背类设计的初衷。例如:
如何解决此问题?A. 将 v 这样的成员“成员变量”(其本身是对象)不在原型链上定义,而是在构造函数中调用,此时,创建对象实例时,就会在对象的__proto__上分配。
Js++提供了类似的方法,只要在jprivate中定义的“成员变量”或“成员函数”都会分配到对象的__proto__上,且只有本实例可用, jprotected中定义的“成员变量”(其本身是对象)也会分配到对象的__proto__上,且只有继承他的可用,
B. 原型链上只定义只读的“成员变量”(其本身是对象)
C.jpublic 定义的“成员变量”(其本身是对象)中的成员,只是只读成员,切记不可赋值,否则会在各个实例中共享。
推荐整理分享javascript教程之不完整的继承(js原型链)(javascript简明教程),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:javascript教程 csdn,javascript入门教程,javascript基础入门视频教程,javascript基础入门视频教程,javascript教程chm,javascript教程chm,javascript简明教程,javascript教程 csdn,内容如对您有帮助,希望把文章链接给更多的朋友!
js常用自定义公共函数汇总 String.prototype.trim=function(){returnthis.replace(/(^s*)|(s*$)/g,"");}//检查是否是日期格式functionisDate(datestr){varresult=datestr.match(/((^((1[8-9]d{2})|([2-9]d{3}))(-)(||0?[
在firefox和Chrome下关闭浏览器窗口无效的解决方法 首先IE是可以通过window.close()来关闭浏览器窗口的,但是在firefox和Chrome下是无效的。原因在于:Firefox下默认设置是无法通过脚本来关闭浏览器窗口的,
JS阻止冒泡事件以及默认事件发生的简单方法 如果p是在div里面,那么呢,P有一个onclick事件,div也有onclick事件,为了触发P的点击事件时,不触发父元素的点击事件,那么就需要调用如下函数:functi
标签: javascript简明教程
本文链接地址:https://www.jiuchutong.com/biancheng/373717.html 转载请保留说明!友情链接: 武汉网站建设