可以利用this给这个类增加一个 toString 方法,代码如下:
function MyClass(name,age){
this.name = name;
this.age = age;
this.toString() = function(){//添加toString()方法
alert(this.name +":"+ this.age);
};
}
var cls1 = new MyClass("liming",10);
cls1.toString();
定义在MyClass这个函数内部,这样的话,每声明一个新的实例,就会将MyClass本身复制一遍,这显然不是最优的做法。这就需要用到函数的prototype属性了。每一个函数都会包含一个prototype属性,这个属性指向了一个prototype对象。
当用构造函数创建一个新的对象时,新的对象会获取构造函数的prototype属性所指向的prototype对象的所有属性和方法,这样一来,构造函数对应的prototype对象所做的任何操作都会反映到它所生成的对象上,所有的这些对象将共享与构造函数对应的prototype对象的属性和方法。
虽然新创建的对象可以使用它的构造函数所指向的prototype对象的属性和方法,但不能像构造函数那样直接调用prototype对象(对象没有prototype属性)。
简而言之,就是如果我们使用函数的prototype对象来给函数添加方法,那么在创建一个新的对象的时候,并不会复制这个函数的所有方法,而是指向了这函数的所有方法。
这就是Jquery中
与
与
与.fn的区别。
jquery.extend(object);为扩展jquery类本身.为类添加新的方法
jquery.fn.extend(object);给jquery对象添加方法
如扩展
.
f
n
.
a
b
c
(
)
,
即
.fn.abc(),即
.fn.abc(),即.fn.abc()是对jQuery扩展了一个abc()方法,在每一个jquery实例都可以引用这个方法