在javaScript中,我创建如下所示的对象。当我将对象解析为函数时,我通常将对象命名为对象。 [见下面的例子]。我的理由是,如果另一个开发人员出现并查看函数,他们立即知道函数需要fooObj,barObj和laaObj。问题是:是否存在可能与此相关的语法/性能问题。 (例如,某些浏览器的参数名称与对象/'功能')的名称相同。
function exampleObj(name, date, wine, cheese) {
this.name = name;
this.date = new Date(date);
this.wine = wine;
this.cheese = cheese;
this.drink = function() {
open(this.wine);
pour(this.wine);
consume(this.wine);
}
this.eat = function() {
unwrap(this.cheese);
getCrackers();
informGromitOfCheese(this.cheese);
consume(this.cheese);
}
}
var example1 = new exampleObj("Foo", "02/05/2014", "Merlot", "Stinky Bishop");
当我将对象传递给函数时:
// Pass the exampleObj here. Param name == Function name
function foo(exampleObj) { // <-- Is this okay?
alert(exampleObj.name);
}
foo(example1);
答案 0 :(得分:1)
是的,您可以使用与参数相同的名称。但我们通常使用Pascal(Upper Camel Case)来命名类Date
,Array
....所以你可以将类命名为ExampleObj
,将实例命名为exampleObj
避免混淆。
答案 1 :(得分:0)
http://jsfiddle.net/h_awk/8W92c/
function foo(name, age)
{
this.name = name;
this.age = age;
this.getDetail = function()
{
alert('Name is: ' + this.name + ' age is: ' + this.age);
}
}
function bar(foo)
{
alert(foo.name);
}
bar(new foo('hawk', '24') );
你将构造函数传递给函数栏,然后当你调用bar时,你实例化foo,它可以不同地完成.ie.var person = new foo('hawk',24)然后传递person作为参数。酒吧(人)仍然得到相同的结果。 foo的这个值指的是函数foo因此给你预期的结果,对不起,我希望这有助于.. :))