原型模式与原型链(js学习)
来源:互联网 发布:利用js实现动态时间 编辑:程序博客网 时间:2024/06/10 13:23
对象的原型(prototype):指向另一个对象,本对象的属性继承于他的原型对象。
原型对象:
原型模式
我们创建的每一个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象。这个对象就是通过调用构造函数而创建的那个对象实例的原型对象。使用原型对象,就不必在构造函数中定义对象实例的信息,而是可以将这些信息直接添加到原型对象中。
function Person(){}Person.prototype.name="n";Person.prototype.age="18";var person1=new Person();
如图,我们创建的Person函数有一个prototype属性,该属性指向了Person函数的原型对象,原型对象里有一个construvtor属性指向当前函数,通过这个构造函数我们便可以为原型对象添加其他的属性和方法。
原型链
原型链的出现就是为了实现继承。利用原型让一个应用类型继承另一个应用类型的属性和方法。
function SuperType(){ this.property=true;}SuperType.prototype.getSuperValue=function(){ return this.property; };function SubType(){ this.subproperty=false;} SubType.prototype=new SuperType();//继承,这里SubType的原型指向了SuperType的原型对象Sub.prototype.getSubValue=function(){ return this.subproperty;};var instance=new SubType();alert(instance.getSuperValue());//true
所有函数的默认原型都是Object的实例,因此,默认原型都会包含一个内部指针指向Object.prototype。 SubType继承SuperType,而SuperType继承了Object。当调用instance.toString时,实际上调用的是保存在Object.prototype中的那个方法。
两种方法来确定原型和实例之间的关系
1.instanceof操作符
2.isPrototypeOf()方法
例
alert(instance instanceof Object);//truealert(SuperType.portotype.isPrototypeOf(instance));//true
注意:
1.重写父类中的方法一定要在添加新方法之前,因为重写之后会覆盖已有的链,这样新写的方法就被覆盖掉了。
2.差不多,就是在通过原型链实现继承时,不能使用对象字面量创建原型方法,这样做也会重写覆盖原型链。
SubType.prototype={
xxx:function(){ …};
wrong:function(){ …};
};
推荐博客:http://www.cnblogs.com/TomXu/archive/2012/01/05/2305453.html
0 0
- 原型模式与原型链(js学习)
- JS 原型与原型链
- js原型与原型链
- JS原型与原型链
- js---原型与原型链
- jS原型与原型链
- JS原型与原型链
- js 原型与原型链
- JS原型与原型链
- js原型与原型链
- [JS]JS原型与原型链
- Javascript深度学习(js执行过程、js继承方式、__proto__、prototype、原型与原型链)
- JS学习-原型链
- JS原型与原型链终极详解(推荐阅读)
- JS原型与原型链终极详解
- js原型对象与原型链
- JS原型与原型链终极详解
- JS原型与原型链终极详解
- Java学习第7天:对象设计模式和懒汉式
- 掰一掰GitHub上优秀的大数据项目
- CSS基础
- I/O接口标准(2):CML、PECL、LVECL和LVDS
- android 动画-Tween Animation(一)动画体系简介,涉及到的核心类、核心接口讲解(上)
- 原型模式与原型链(js学习)
- linux查找被删除但是未释放空间的文件
- 记一次驴唇不对马嘴的DIY之旅(六)
- 如何启动eclipse时提示选择工作空间||删除workspace空间的目录
- LDAP开发
- Linux下修改MySQL的root用户密码
- Mysql简单入门
- python核心编程-线程threading模块二
- 电商活动中刮刮卡的实现