如何理解javascript写在大括号中的参数

lghyt 发布于 2016/05/26 09:31
阅读 445
收藏 0

这种写法充斥在jquery中,尤其是插件的写法更多,当然初步理解是做对象,但知道这,还不能真正的理解,主要是为什么能这么写呢,可能有人说这是规定,这种解释是菜鸟级人物的说法,还请高手指点一下。

精妙回答:

刘万杰这样写的好处是避免传多个参数,所以整合到一个对象中传入函数 

加载中
0
lghyt
lghyt

引用来自“beastxiao”的评论

你指的是类似ajax({}),这里的大括号? 这个是调用函数传的参数,如果函数参数多了,使用ajax(a,b,c,d,...)这样传参,太麻烦了。所以希望参数能像一个map,有键值对。js中类似map的就是对象,js中创建对象的方法有很多,常见的 var a={}, b = new Object(), c = Object.create(...)。像你说插件中这样写法很多,那你应该也看到插件中会有一个默认的对象, 比如 var default = {}, default有很多属性我就不写了,当调用插件的时候,你传的参数如果包含在default里面,就会覆盖default的对应属性,一般是使用$.extend实现复制属性的。

调用类似函数,你也可以var a={b:1}, ajax(a); 与ajax({b:1})是一个意思,所以建议你看下对象的创建和初始化,就不会有这样的问题了

我试做了一个,但不行,指点一下哪里错了

function myObjectFn({a:"",b:""}){
    alert(a+b);
}
myObjectFn(5,6);



lghyt
lghyt
回复 @阿信sxq : 后来我又这样写了也成功了 function func(obj){ alert(parseInt(obj.a)+parseInt(obj.b)); } func({a:"55",b:"56"}); 还要体会一下这样写的好处和意义
阿信sxq
阿信sxq
哪有这么写的应该是调用的地方写func({a:"a",b:"b"});然后定义函数的地方写func(obj){alert(obj.a)}
0
螃蟹大叔
螃蟹大叔
什么叫大括号中的参数,能举一个例子么
螃蟹大叔
螃蟹大叔
另外一个问题中帮你回答了,就是一个js对象,可以自行去百度js的对象申明方法有哪些,这样写的好处是避免传多个参数,所以整合到一个对象中传入函数
lghyt
lghyt
还比如jquery中类似这种写法特多 $.extend({}, { sdaf:dd,ddfdf:'' }, abc);
lghyt
lghyt
比如foo({‘id':42})类似这种写法
0
阿信sxq
阿信sxq
对象啊有什么不好理解的
阿信sxq
阿信sxq
回复 @lghyt : 键单点,一个参数的位置,单是传递的参数值有很多,而且参数值的数量还是不确定的
lghyt
lghyt
能给一个例子吗,便于理解,太抽象了
0
b
beastxiao

你指的是类似ajax({}),这里的大括号? 这个是调用函数传的参数,如果函数参数多了,使用ajax(a,b,c,d,...)这样传参,太麻烦了。所以希望参数能像一个map,有键值对。js中类似map的就是对象,js中创建对象的方法有很多,常见的 var a={}, b = new Object(), c = Object.create(...)。像你说插件中这样写法很多,那你应该也看到插件中会有一个默认的对象, 比如 var default = {}, default有很多属性我就不写了,当调用插件的时候,你传的参数如果包含在default里面,就会覆盖default的对应属性,一般是使用$.extend实现复制属性的。

调用类似函数,你也可以var a={b:1}, ajax(a); 与ajax({b:1})是一个意思,所以建议你看下对象的创建和初始化,就不会有这样的问题了

0
lghyt
lghyt

搜索百度后的一个新发现,做一个记号,和题目相关


在 JavaScript 中你可以将函数定义为对象的方法。
以下实例创建了一个对象 (myObject), 对象有两个属性 (firstName 和 lastName), 及一个方法 (fullName):
实例

var myObject = {
  firstName:"John",
  lastName:"Doe",
  fullName:function() {
    returnthis.firstName +" "+this.lastName;
  }
}
myObject.fullName();    // 返回 "John Doe"

返回顶部
顶部