JS学习之prototype属性
2015-08-26 22:15
603 查看
javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用。以A.prototype = new B();为例,
理解prototype不应把它和继承混淆,A的prototype为B的一个实例,可以理解A将B中的方法和属性全部克隆了一遍,A可以使用B的方法和属性,这里强调的是克隆而不是继承,可以出现这种情况:A的prototype是B的实例,同时B的prototype也是A的实例。
View Code
这里的baseinstance.showMsg.call(instance)可以理解为:将instance当做baseinstance来调用,调用它的对象方法showMsg,这里可能有人会问,为什么不用baseClass.showMsg.call(instance);这就是对象方法和类方法的区别,我们想调用的是baseClass的对象方法,假如有下面这种写法:
ExtendClass.prototype = new BaseClass();指的是ExtendClass的原型指向BaseClass原型的属性
ExtendClass prototype = BaseClass;指的是ExtendClass的原型执行BaseClass本身。
理解prototype不应把它和继承混淆,A的prototype为B的一个实例,可以理解A将B中的方法和属性全部克隆了一遍,A可以使用B的方法和属性,这里强调的是克隆而不是继承,可以出现这种情况:A的prototype是B的实例,同时B的prototype也是A的实例。
extendClass.prototype = new baseClass(); var instance = new extendClass(); var baseinstance = new baseClass(); baseinstance.showMsg.call(instance);//显示baseClass::showMsg
View Code
这里的baseinstance.showMsg.call(instance)可以理解为:将instance当做baseinstance来调用,调用它的对象方法showMsg,这里可能有人会问,为什么不用baseClass.showMsg.call(instance);这就是对象方法和类方法的区别,我们想调用的是baseClass的对象方法,假如有下面这种写法:
ExtendClass.prototype = new BaseClass();指的是ExtendClass的原型指向BaseClass原型的属性
ExtendClass prototype = BaseClass;指的是ExtendClass的原型执行BaseClass本身。
相关文章推荐
- Javascript生成Guid
- javascript笔记--流程控制、for、while、数据类型、js对象
- JavaScript实现页面跳转的五种方式
- js获取?后面具体参数的值
- jsonp模拟获取百度搜索相关词汇
- 【JavaScript】DOM操作复选框
- 如何用JS代码实现鼠标移动,背景变色?
- 【JavaScript】DOM操作表格
- json字符串的类型以及在javascript中的解析方式
- JS变量名命名规范
- 【JavaScript】正则表达式
- Could not initialize class net.sf.json.util.JSONUtils
- Ajax提高篇(6)服务器端脚本和程序中用 JSON 进行响应和回复
- Ajax提高篇(5)使用JSON 进行数据传输
- JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
- mark jsp BigDicimal 小数保留
- 【解决】SSH项目问题(1)--Could not initialize class net.sf.json.util.JSONUtils
- JS判断移动设备函数(几乎涵盖所有的移动终端)
- javascript初探
- Web设计中打开新页面或页面跳转的方法 js跳转页面