对象的 prototype 属性
应用 JavaScript 对象的 prototype 属性,可以增加或重新定义对象的属性和方法。对象可以是 JavaScript 内置的对象或您自己创建的对象。
增加对象的属性
<script language="JavaScript"> function Person(name) { this.name = name; } // 实例化对象 var xiaoming = new Person("小明"); // 增加 age 属性 Person.prototype.age = null; xiaoming.age = 25; document.write( "我叫" + xiaoming.name + ",今年" + xiaoming.age + "岁。" ); </script>
运行该例子,输出:
我叫小明,今年25岁。
增加对象的方法
String.length 是 String 对象中表示字符串长度的一个属性,遗憾的是该属性对全角和半角字符都视作一个字符,因此在处理一些中英混合的文本时不太方便。现在我们利用 prototype 属性,新增加一个 cnLength 方法来弥补 String.length 的不足:
<script language="JavaScript"> String.prototype.cnLength = function(){ var cn_str = this.match( /<^\x00-\xff>/ig ); return this.length + (arr==null?0:arr.length); } var str = "5idev我爱开发网"; document.write( str.length + "<br />" ); document.write( str.cnLength() ); </script>
运行该例子,输出:
10 15
同样在自定义的对象中也可以动态的增加方法或者重新定义已有的方法。上面例子中涉及到的正则表达式,请参阅《JavaScript 正则表达式》一节。
支持 prototype 属性的对象
以下内置的 JavaScript 对象支持 prototype 属性:
提示
有一个著名的 JavaScript 框架叫 Prototype,官方网站:www.prototypejs.org。