首页 > 代码库 > javascript定义类的方法总结

javascript定义类的方法总结

1.构造函数法

类是对象的模板,定义了对象共有的方法属性数据 等,在javascript中一个函数就是一个对象,也可以看做一个类的构造方法。

所以我们可以像以下方式定义类:

          //1.经典的构造方法            Q=function(name){                this.name=name;                this.func_a=function(arg){                    alert(arg);                };            };            q=new Q(‘akun‘);

2.通过原型来定义类

原型(prototype)有点像python里的字典,原型记录了从它生成的对象所具有的方法,属性,相当于创建对象的模板

        Q.prototype={                age:13,                say_age:function(){                    alert(‘age is‘+this.age);                }            }

这样,Q生成的对象不仅具有func_a函数还具有age属性和say_age方法。

           Q[‘sex‘]=‘male‘;//the sex belongs to Q but instance of Q!            q=new Q(‘akun‘);            q.say_age();//age is 13            q.func_a(‘my name is‘+" "+ q.name)//my name is akun            q.func_a(‘the sex is ‘+ q.sex);//the q.sex is undefined            q.func_a(‘the sex is ‘+ Q.sex);//the sex is male            //如果把Q[‘sex‘]改为Q.prototype[‘sex‘]则Q的实例q具有sex属性

3.“极简主义”

            var Q={                init:function(name){                    var obj={};                    obj.name=name;                    obj.say_hello=function(){                        alert(this.name);                    };                    return obj;                },            };            q=Q.init(‘akun‘);            q.say_hello();

以上使用init方法创建对象,相当于init作为了构造方法来返回一个对象,我们在这个对象上定义属性和方法。

 

4.关于this

            Q.fn= Q.prototype;            Q.extend=function(attr,value){this[attr]=value;};//this指Q            Q.fn.extend= Q.extend;//Q.fn.extend中的this指向Q.fn即  Q.prototype            Q.extend(‘weight‘,‘100kg‘);            Q.fn.extend(‘myweight‘,‘99kg‘);            q=new Q(‘akun‘)            alert(q.weight)//undefined            alert(q.myweight)//99kg            alert(Q.weight)//100kg

 

javascript定义类的方法总结