1)先建立对象直接给对象添加方法属性:javascript
var obj = new MyObject(); obj.myFunction = function(){};
2) 在构造函数中直接经过this添加方法属性:java
MyObject(){ this.myFunction = function(){}; }
咱们知道this指向当前的对象,因此其实this. 相似于obj. 第一种方法。只不过是在构造函数就提早准备好了,当用构造函数来new一个对象的时候,这个对象随着this的指向,它就具有了myfunction的方法。而第1)种方法是先建立了对象以后才给它自定义一个方法。函数
3)在原型上添加自定义方法:this
咱们知道每个对象都有与之对应的原型,而且可以继承引用原型中的属性和方法,这样一来咱们在原型上添加一个方法。全部继承该原型的对象均可以引用该自定义方法,包括当前对象。spa
当前对象的原型是它的类(构造函数()名).prototype的值。这是在定义这个类的时候所定义的原型。如:obj 的类是MyObject。因此他的原型为:MyObject.prototype因此给当前对象添加自定义方法可以下prototype
MyObject.prototype.myFunction=function(){};
4)那如今就能够在obj对象上直接引用myFunction插件
obj.myFunction();
首先,1. JQ类库定义了一个全局函数:jQuery(),该函数的返回值是一个DOM对象;jQuery()是一个工厂函数,不是构造函数(这也解释了为何它的原型不是jQuery.prototype而是jQuery.fn,从名称上第一个字母不是大写也能看出来了)看下jQuery的源码便知道真相:code
jQuery.fn = jQuery.prototype = {
。jQuery.fn是全部jQuery对象的原型对象。全部实例化的jQuery对象都是这个jQuery类,并继承自jQuery.fn(它的值)。因此咱们能够模仿JavaScript原生的添加方法之一是在原型上添加自定义方法。对象
jQuery.fn.myFunction = function(){};//建立插件 $('#btn').myFunction();//引用插件
1) 自调用();:是由于在引入当前插件的时候,我这个插件就能直接初始化了:在你使用以前提早帮你把自定义方法(插件)插在jQuery.fn原型对象上,因此当你引入该插件js的时候,无需关心准备工做(先实例化运行),直接在对象上.运算符引用便可。继承
2)匿名函数:的使用其实(你就当是一个普通函数便可)是为了保护全局的命名空间,你的插件方法里确定定义了不少的变量,你这些变量若是暴露在全局变量里,可能会污染其余同名的全局变量,那这样一来你这个插件就是"有毒"的。因此把你的插件方法函数内容定义在一个函数(做用域)里,就能避免这个问题。若是须要jQuery对象来定义,直接把全局jQuery对象当参数同样传入这个的函数便可。实参务必是"jQuery"字符不是"$"!
将一个对象的的属性和方法扩展到jQuery对象上
var person = { sex : 'male', showName : function(name){ alert("Name: " + name); } }; jQuery.extend(person); // 将person对象扩展到jQuery($)对象上 jQuery.showName("admin"); // Name: admin $.showName("admin"); // Name: amdin alert("Sex: " + $.sex); // Sex: male