javascript prototype的深度探索不是原型继承那么简单第2/3页
更新时间:2008年06月02日 19:16:04 作者:
JavaScript中对象的prototype属性,可以返回对象类型原型的引用。这是一个相当拗口的解释,要理解它,先要正确理解对象类型(Type)以及原型(prototype)的概念。
上面的例子通过prototype为Point对象设定了默认值(0,0),因此p1的值为(0,0),p2的值为(1,2),通过delete p2.x, delete p2.y; 可以将p2的值恢复为(0,0)。下面是一个更有意思的例子:
[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
利用prototype还可以为对象的属性设置一个只读的getter,从而避免它被改写。下面是一个例子:
[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
将this.getFirstPoint()改写为下面这个样子:
this.getFirstPoint = function()
{
function GETTER(){};
GETTER.prototype = m_firstPoint;
return new GETTER();
}
则可以避免这个问题,保证了m_firstPoint属性的只读性。
[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
实际上,将一个对象设置为一个类型的原型,相当于通过实例化这个类型,为对象建立只读副本,在任何时候对副本进行改变,都不会影响到原始对象,而对原始对象进行改变,则会影响到副本,除非被改变的属性已经被副本自己的同名属性覆盖。用delete操作将对象自己的同名属性删除,则可以恢复原型属性的可见性。下面再举一个例子:
[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
您可能感兴趣的文章:
- Javascript中 关于prototype属性实现继承的原理图
- JavaScript类和继承 prototype属性
- js中继承的几种用法总结(apply,call,prototype)
- 深入了解javascript中的prototype与继承
- JavaScript面向对象之Prototypes和继承
- Javascript 原型和继承(Prototypes and Inheritance)
- JavaScript不使用prototype和new实现继承机制
- JavaScript使用prototype原型实现的封装继承多态示例
- javascript基于prototype实现类似OOP继承的方法
- Javascript中的prototype与继承
- JS伪继承prototype实现方法示例
- JavaScript使用prototype属性实现继承操作示例


最新评论