js学习心得(all、apply、fn、prototype的理解)

这几天按着b.tab.js插件,自己实现了一个基于jquery的cms后端管理界面,运用Sortable.min.js插件实现标签的排序。。。

一、插件的大概布局:运用的是js的---原型模式

$(function(){
    //插件缓存
    //return this.each(function(){}),这里是运用到了jquery的链式操作
    function plugin(options){
    //下面描述  this.each  的作用。this.each返回的是一个jQuery对象,this.each()这里的this也是jquery对象。而each里面的this指的是dom对象。。
        return this.each(function(){
    //这里的this是dom对象
            this.
        })
    }
    //

    //初始化插件
    $.fn.bTabs = plugin;
    //标签新增
    $.fn.bTabsAdd = TabAdd;
    //标签关闭
    $.fn.bTabsClose = TabClose;
    
})(jQuery,window);

//return this.each(function(){})----举例----
each test

①:有关jquery,this,each,fn,prototype的大概意思。。 

;(function($,window){
	//$.fn是什么意思?
	//$.fn只是$.prototype原型对象的别名。。。就是$.fn和$.prototype是一样的。。。即向jQuery添加test()方法。。这样所有的jquery对象
	//都可以使用这个test()方法了。。。。
	$.fn.test = function(){
		/*this.css('color','red');//①.测试this是否是jQuery对象
		alert(this instanceof $);//②.测试this是否是jQuery对象
		alert(this[0]);*/
		//为什么这里的this为jQuery对象,因为this永远指向调用该方法(函数)的那个对象(all,apply除外)。。。。下面会介绍call和apply的用法和作用。。。
		this.each(function(){
			//这里的this是dom对象
			alert(this.nodeName);
			this.css('color','red');//这里是无效的,因为这里的this不是jQuery对象,而是属于dom?
			//为什么是dom呢?
			//这个是jquery的里面函数实现了的,只要记住这个dom对象就行。。。。
			//prototype 对象是个模板,要实例化的对象都以这个模板为基础。总而言之,prototype 对象的任何属性和方法都被传递给那个类的所有实例。原型链利用这种功能来实现继承机制。
		})
	}
	
})(jQuery,window);

调用

②:call和apply的作用。。。


//1.call 和 apply的简单用法:绑定一些函数,用于传参调用。。
//比如 : Math.max.apply(this,[1,2,3,4]);可以求出最大值。。
//一般来说 this 总是指向调用某个方法的对象,但是再使用call、apply方法的时候,就会改变this的指向


	
		
		
		
		
	
	
		
点击我测试

 

你可能感兴趣的:(call,apply,prototype,原型模式)