使用对象名称作为参数名称

时间:2014-05-02 09:36:33

标签: javascript function object parameter-passing

在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);

2 个答案:

答案 0 :(得分:1)

是的,您可以使用与参数相同的名称。但我们通常使用Pascal(Upper Camel Case)来命名类DateArray ....所以你可以将类命名为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因此给你预期的结果,对不起,我希望这有助于.. :))