多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
##javascript 难点讲解 >prototype 中文翻译为原型。实际应用中有点像个备胎,当我们要使用对象的属性或方法的时候,如果该属性或者方法不存在,则会去prototype中寻找。 ~~~ var ren = function(){ this.myage = function(){ alert("my age is 18"); } } ren.prototype.myage = function(){ alert("my age is 100"); } ren.prototype.myname = function(){ alert("my name is xiaoming"); } var xiaoming = new ren; xiaoming.myage();//my age is 18 xiaoming.myname();//my name is xiaoming ~~~ * * * * * >call(obj) 执行函数的时候,函数中的this = call中的第一个参数(对象) ~~~ var a = function(){ alert(this.myname); } var b = { myname : "bbb" } a();//undefined,a方法的对象this是a a.call(b);//bbb,因为a方法的对象this是b ~~~ >闭包 闭包只是一个思路,在生产中,我们会经常用到别人的代码,但是我们又不知道别人定义了多少变量和函数,所以很容易出现函数或变量名冲突,为了解决这一问题,我们把自己代码都放在function中,只暴露一个或者极少数的全局变量供其他代码调用。 ~~~ var a = "out"; var f= (function(){ var a= "inner"; }); f(); alert(a)//out ~~~ 为了让闭包更方便读写,所以我们可以使用闭包函数,原理类似上面的代码。 说明:闭包由2个括号组成,第一个括号内必须是一个function参数 ~~~ (function(){/*代码*/})(); ~~~