Javascript使用function创建类的两种方法

转载https://www.jb51.net/article/97700.htm     https://www.cnblogs.com/pingchuanxin/p/5722139.html

1、使用function类

//myFunction.js
var CMyFunc=function()
{
//类的公共方法,供外部调用
this.Func1=function()
{
var i=0;
return i;
}

this.Func2=function()
{
_privateFunc();
}

//类中的私有方法,供公共方法调用
function _privateFunc()
{
return 0;
}
}

CMyFunc myFunc=new CMyFunc();

使用:其它javascript文件引入myFunction.js后,直接使用myFunc(全局变量).Func1

 

2、使用function类(二)

//myFunction.js
var CMyFunc=function()
{
var myFunc=new Object();
//类的公共方法,供外部调用
myFunc.Func1=function()
{
var i=0;
return i;
}

myFunc.Func2=function()
{
_privateFunc();
}

//类中的私有方法,供公共方法调用
function _privateFunc()
{
return 0;
}

return myFunc;
}

使用:其它javascript文件引入myFunction.js后,通过var myFunc=new CMyFunc()初始化一个对象使用

优点:1、使用myFunc对象函数时有智能提示 2、不用在myFunction.js中创建全局变量 3、myFunc对象函数中的this参数指向一致

推荐使用

3、使用jquery扩展

//myFunction.js
(function ($) {
$.MyFunc={};

$.MyFunc.Func1=function()
{
var i=0;
return i;
}

$.MyFunc.Func2=function()
{
var i=0;
return i;
}


})(jQuery);

使用:其它javascript文件引入myFunction.js后,直接使用$.MyFunc.Func1()即可

直接使用jquery看不懂

 

js中秉承着一切都是对象的原则,不论是方法还是其他都不例外

 

一:实际上就和我们最为平常的方法是一样的。

 

function fname(test){ alert(""+test); }

 

二:通过Function的函数的构造器进行函数对象的定义。

 

var fname = new Function("test", "alert(''+test);"); 第一个参数实际上是表示要传入函数中的参数,二第二个参数表示的是当前的函数要执行的过程。两个参数实际上都是string类型的。

 

三:通过变量只带一块function关键字定义的方法来进行定义。

 

var fname = function(test){alert(""+test);}

 

上面的三种方法虽然最后都是声明定义了一个函数,但是也是有区别的。第一种方法实际上是为函数命名为fname,而二三种方法使用起来实际上是把一个匿名函数赋值给一个变量。使用第二种方法来定义函数的时候,实际上就是调用构造函数并在每次解析的时候都会重新读取并创建一新的函数对象,由此可见当在循环体中调用这样的函数的时候会是十分的低效的,还有一点就是,当我们使用其创建一个函数对象的时候,其并不遵循典型的作用域,而是一直作为顶级函数来执行的。意思就是,当在函数内部调用它的时候,其实他并不会用函数内部定义的变量。而是只能使用全局变量。

 

posted @ 2021-04-17 19:51  sac2021  阅读(475)  评论(0)    收藏  举报