繁体中文
设为首页
加入收藏
资讯中心
网络编程
数据库
脚本专栏
实用技巧
软件编程
网页制作
操作系统
经典网摘
网站技巧
免费资源
关于我们
文章搜索
主机租用
域名查询
YUI.Ext相关
prototype
jquery
dojo
json
lib_js
js类学习
页面导航:
首页
→
网络编程
→
JavaScript
→
应用技巧
→
prototype
→ 正文内容 不错的一篇关于javascript-prototype继承
不错的一篇关于javascript-prototype继承
发布:dxy 字体:[
增加
减小
] 类型:转载
1.最基本的用法 把ClassA的一个实例赋值给ClassB,
ClassB就继承了ClassA的所有属性。
代码入下:
点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]
2.从原型继承理论的角度去考虑,
js的原型继承是引用原型,不是复制原型,
所以,修改原型会导致所有B的实例的变化。
代码如下:
点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]
3.然而 子类对象的写操作只访问子类对象中成员,
它们之间不会互相影响,因此,
写是写子类 读是读原型(如果子类中没有的话)。
点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]
4.每个子类对象都执有同一个原型的引用,
所以子类对象中的原型成员实际是同一个。
点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]
5.构造子类时 原型的构造函数不会被执行
点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]
6.接下来是致命的,在子类对象中访问原型的成员对象:
点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]
7.所以 在prototype继承中 原型类中不能有成员对象! 所有成员必须是值类型数据(string也可以)
用prototype继承有执行效率高,不会浪费内存,为父类动态添置方法后子类中马上可见等的优点。
8.prototype继承是通过把子类的原型对象(prototype)设置成父类的一个实例来进行继承的。
9.prototype继承也有四个比较明显的缺点:
缺点一:父类的构造函数不是像JAVA中那样在给子类进行实例化时执行的,而是在设置继承的时候执行的,并且只执行一次。这往往不是我们希望的,特别是父类的构造函数中有一些特殊操作的情况下。
缺点二:由于父类的构造函数不是在子类进行实例化时执行,在父类的构造函数中设置的成员变量到了子类中就成了所有实例对象公有的公共变量。由于JavaScript中继承只发生在“获取”属性的值时,对于属性的值是String,Number和Boolean这些数据本身不能被修改的类型时没有什么影响。但是Array和Object类型就会有问题。
缺点三:如果父类的构造函数需要参数,我们就没有办法了。
缺点四:子类原本的原型对象被替换了,子类本身的constructor属性就没有了。在类的实例取它的constructor属性时,取得的是从父类中继承的constructor属性,从而constructor的值是父类而不是子类。
10.可以针对prototype的缺点进行改造
比如把它写成Function对象的一个方法,这样用的时候方便。
Function.prototype.Extends = function (parentClass)
{
var Bs = new Function();
Bs.prototype = parentClass.prototype;
this.prototype = new Bs();
this.prototype.Super = parentClass;
this.prototype.constructor = this;
}
希望各位 js 高手能把更好的方式介绍给大家
针对第3,6个
点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]
针对继承,
Array.prototype 就不能继承 ClassA,ClassB
点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]
带参数的继承问题
点击运行可以看到效果:
aaa
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]
Tags:
不错的一篇关于javascript-prototype继承
浏览次数:
载入中...
打印本文
关闭本文
返回首页
0
顶一下
上一篇文章:
类之Prototype.js学习
下一篇文章:
Prototype1.6 JS 官方下载地址
·在百度中搜索关于“
不错的一篇关于javascript-prototype继承
”相关内容
文章评论
共有
位脚本之家网友发表了评论
我来说两句
同 类 文 章
Prototype使用指南之base.js
Prototype最新版(1.5 rc2)使用指南(1)
Prototype使用指南之selector.js
用prototype实现的简单小巧的多级联动菜单
Prototype使用指南之ajax
prototype 1.5相关知识及他人笔记
prototype1.5 初体验
Prototype1.4手册
Prototype1.5 rc2版指南最后一篇之Positi
Prototype使用指南之hash.js
最 近 更 新
Prototype使用指南之array.js
Prototype使用指南之enumerable.js
初学prototype,发个JS接受URL参数的代码
JavaScript使用prototype定义对象类型
prototype1.4中文手册
Prototype使用指南之string.js
使用prototype.js 的时候应该特别注意的几
Prototype最新版(1.5 rc2)使用指南(1)
JavaScript语法着色引擎(demo及打包文件
prototype 源码中文说明之 prototype.js
热 点 排 行
Prototype1.6 JS 官方下载地址
prototype1.4中文手册
prototype 1.5 & scriptacul
JavaScript使用prototype定义对象
用prototype实现的简单小巧的多级
prototype1.5 初体验
Prototype最新版(1.5 rc2)使用指
Prototype使用指南之dom.js
Prototype使用指南之ajax
不错的一篇关于javascript-proto
文章评论
共有 位脚本之家网友发表了评论我来说两句