js:jquery&&prototype// 类声明方法 怎么被该类中声明的另一个方法调用

henji0715 2015-09-24 11:18:26
Function.prototype.addMethod=function(name,fn){
this.prototype[name]=fn;
}
function Methods(){
this.test=function(){alert('test');};

//Methods.span=document.createElement('span');//here can not destroy var span
Methods.addMethod('condition',function(obj,str,min,max){
alert('method1');
if(obj.val().length<min||obj.val().length>max){
var span = document.createElement('span');// destroy var span
//JQ=$ of jquery
if(JQ('#error_msg').html()!=undefined)
JQ('#error_msg').remove();
span.innerHTML=str;
span.setAttribute('style','color:red');
span.setAttribute('id','error_msg');
obj[0].parentNode.insertBefore(span,obj[0]);
span =null;
}
})
//.addMethod('checkUserName',function(){
// condition(JQ('#username'),'帐号输入超出范围',6,12);
//}).addMethod('checkPwd',function(){
// condition(JQ('#pwd'),'密码输入超出范围!',6,20);
//}).addMethod('checkPhone',function(){
// condition(JQ('phone'),'手机号码输入不正确!',11,11);
//});
};
JQ(function(){
alert('sss');
var m = new Methods()
m.test();
m.condition(JQ('#username'),'帐号输入超出范围',6,12);
// JQ('#username').blur(m.checkUserName());
// JQ('#pwd').blur(m.checkPwd());
// JQ('#phone').blur(m.checkPhone());
});
注销掉的方法去调用condition 方法 报未定义或者null引用的属性Methods,这个怎么调用啊,求大神指点!
...全文
201 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
henji0715 2015-09-25
  • 打赏
  • 举报
回复
//给类型添加addMethod函数,类型调用这个方法能给该类型的原型添加名字为name的fn函数,添加在原型上,所有只能用对象调用 Function.prototype.addMethod=function(name,fn){ this.prototype[name]=fn;//返回类型原型 return this;//类型连调 } function Methods(){ var _this=this;//代表这个类, //相当于Methods.prototype.condition=function([parameters]){..} Methods.addMethod('condition',function(obj,str,min,max){ if(obj.val().length<min||obj.val().length>max){ var span = document.createElement('span'); if($('#error_msg').html()!=undefined) $('#error_msg').remove(); span.innerHTML=str; span.setAttribute('style','color:red'); span.setAttribute('id','error_msg'); obj[0].parentNode.insertBefore(span,obj[0]); span =null;// destroy var span } ; }).addMethod('checkUserName',function(){ _this.condition($('#username'),'帐号输入超出范围',6,12); return this;//对象连调 }).addMethod('checkPwd',function(){ _this.condition($('#pwd'),'密码输入超出范围!',6,20); return this; }).addMethod('checkPhone',function(){ _this.condition($('#phone'),'手机号码输入不正确!',11,11); return this; }); }; $(function(){ var m = new Methods() $('#username').blur(m.checkUserName); $('#pwd').blur(m.checkPwd); $('#phone').blur(m.checkPhone); });
henji0715 2015-09-25
  • 打赏
  • 举报
回复
虽然我已经解决了,但是还是非常感谢你,我是想用连调的方式,昨天狠狠的看了下prototype,弄明白怎么回事了
cheery_an 2015-09-25
  • 打赏
  • 举报
回复
加上this. 就可以了

Function.prototype.addMethod=function(name,fn){
    this.prototype[name]=fn;
}
function Methods(){
    this.test=function(){alert('test');};

    //Methods.span=document.createElement('span');//here can not destroy var span
    Methods.addMethod('condition',function(obj,str,min,max){
        alert('method1');
        /*if(obj.val().length<min||obj.val().length>max){
            var span = document.createElement('span');// destroy var span
            //JQ=$ of jquery
            if(JQ('#error_msg').html()!=undefined)
                JQ('#error_msg').remove();
            span.innerHTML=str;
            span.setAttribute('style','color:red');
            span.setAttribute('id','error_msg');
            obj[0].parentNode.insertBefore(span,obj[0]);
            span =null;
        }  */
    });
    Methods.addMethod('checkUserName',function(){
     this.condition($('#username'),'帐号输入超出范围',6,12);
    })
    //.addMethod('checkPwd',function(){
    // condition(JQ('#pwd'),'密码输入超出范围!',6,20);
    //}).addMethod('checkPhone',function(){
    // condition(JQ('phone'),'手机号码输入不正确!',11,11);
    //});
};
$(function(){
    alert('sss');
    var m = new Methods()
    m.test();
    m.condition($('#username'),'帐号输入超出范围',6,12);
    m.checkUserName();
    // JQ('#pwd').blur(m.checkPwd());
    // JQ('#phone').blur(m.checkPhone());
});

87,926

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧