关于js函数的写法 fun = function(){} fun:{}有什么不同,高手回答

本人在开发中遇见有函数的写法不同,想知道不同写法的意义,高手解答。myfun:function(){}myfun=function(){}functionmyfun(){... 本人在开发中遇见有函数的写法不同,想知道不同写法的意义,高手解答。
myfun:function(){}
myfun = function(){}
function myfun(){}
var myfun =function(){}
myfun.prototype.myfunPro = function (){}
展开
 我来答
创作者DKEIFHCB14128
2014-09-29 · TA获得超过211个赞
知道答主
回答量:38
采纳率:0%
帮助的人:60万
展开全部

这几种方法每一个都有不一样的作用。

1.myfun:function(){} 这个是必须写在对象内部的,这是一个对象的方法,如

var a = {
   myfun:function(){} 
}

写在外面会报错。

2.任何时候都不要这样写myfun = function(){},这样写就变成了全局对象window的一个属性,要记得加上var ,第四种方式是对的,如下:

var myfun = function(){}

这是一种声明函数的方式,左边是一个变量,右边是一个函数的表达式,意思就是把一个匿名的函数表达式复制给了变量myfun,只是声明了一个变量指向了一个函数对象。这个和第三种方法function myfun(){}声明的方法差别不大,但还是有差别的。

这就要涉及到javascript解析的部分了,简单来说,js在解析的过程中,会先把函数和变量提前解析。

function myfun(){}这种声明方法会把函数整个语句显示的提前到了脚本或者函数前(当前作用域),函数名和函数均会被提前(会在执行上下文代码前声明)。

而var myfun = function(){}这种声明方法,只是提前了一个变量,并没有提前函数体。

3.最后一种并不是声明的函数,只是在myfun函数上的原始对象上加了一个myfunPro方法,构造函数中用到的。给你个例子:

var myfun = function(){
  this.a = "a";
  }
  myfun.prototype.myfunPro = function (){
  alert("0")
  }
  var test = new myfun();
  console.log(test);

运行结果如下图:

这时候如果你在最底部加上一段代码,如下:

var myfun = function(){
  this.a = "a";
  }
  myfun.prototype.myfunPro = function (){
  alert("0")
  }
  var test = new myfun();
  console.log(test);
  test.myfunPro();

这时候就会弹出一个对话框 0了 ,你可以试试

追问
请老师不吝赐教!学生静待解答。
ctkbg
2014-09-29 · 超过23用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:34.7万
展开全部
myfun:function(){}
myfun = function(){}
function myfun(){}
var myfun =function(){}
这4种个人认为区别不大,不同的需要选择不同的就行了。
myfun.prototype.myfunPro = function (){}
在面向对象的时候可以只给指定的对象(myfun)绑定这个方法或对象( function (){})。
更多追问追答
追问
最后prototype的写法你说的我还没明白?这种写法是为了使myfunPro成为公共方法吗?就是别人可以用new方式快速克隆??
追答
js是可以面向对象的 ,如果把myfun看成一个对象,那么
myfun mf1, mf2;
mf1.prototype.myfunPro = function(){}就只是绑定到mf1实例上。

fyfun = function(){
myfunPro:function(){}

}
是所有对象实例上都会有
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式