1、2014年6月29日 10:51:44
原型模式
疑问一:
String类型中,动态为其加入函数时候,可以通过String.prototype.[[functionname]] = function(){}方式或者直接string.[[functionname]] = function(){},但是遇到了一个问题,当创建一个实例时,只有前者可以运行,后者报错找不到该方法,如:var msg = 'hello world' ; msg.[[functionname]] ; ×
疑问二:
直接调用String.[[functionname]]可行。×
解答:疑问一:我自己试过很多次,直接以对象名添加方法只存在与该对象构造方法之外。实例化对象是无法得到该方法的。但是可以利用寄生构造函数模式来实现,不过就有点“曲线救国”的味道:
function SpecialString(msgstr){ var msg = new String(msgstr) ; msg.startWith = function(text){ return this.indexOf(text) === 0 ; } return msg ; } var msg = new SpecialString('hello world') ; alert(msg.startWith('h')) ;