下面我写出四种既风格来完成相同既功能。
第一种:
function utils(){ var a="aa"; this.myalert=function (){ alert(a); } this.setA=function(){ a=arguments[0]; } } var theutils=new utils(); theutils.setA("bbbb"); theutils.myalert();
第二种:
var utils=function (){ var a="aa"; return { myalert:function(){ alert(a); }, setA:function(){ a=arguments[0]; } } }();
第三,四种都是使用prototype属性来写的。
var utils=function(){ var a="aa"; } utils.prototype.myalert=function (){ alert(a); } utils.prototype.setA=function(){ a=arguments[0]; } var theutils=new utils(); theutils.setA("bbbb"); theutils.myalert();
第四种:
var utils=function(){ var a="aa"; } utils.prototype={ myalert:function (){ alert(a); }, setA:function(){ a=arguments[0]; } } var theutils=new utils(); theutils.setA("bbbb"); theutils.myalert();
虽然它们实现相同的功能,但是性能不有所区别的,只是在客户端的话,这些小脚本用不了多小时间,就忽略了,看个人习惯来用是最好不过的了。
最后还介绍个匿名函数吧。
这个函数的作用就是其实也很大,比如你要引用一个JS文件的时候,最好用上距,匿名函数最大的作用就是保护好局部的变量不受外部变量的影响。如果你在引用的JS文件中写上这个函数,那么这个文件中的函数可以定义文件里面的变量,去一齐使用,而外部的JS文件就算定义上相同名字的变量也不会受到影响。
JS文件代码:
(function() { var foo = 10; var bar = 2; baz = function() { return foo * bar; }; alert("a"); })();
调用的代码:
alert(baz());