2010-09-10 33 views
0

精通javascript程序员的一个小问题:有两种方法可以在javascript中声明一个函数。在JavaScript函数中混合使用异议表示法和常规样式?

答:JavaScript的对象符号

function MyLittleHouseA(name) { 
    this.age = 88, 
    this.name = name, 
    this.getName = function() 
    { 
     return this.name; 
    } 
} 

B:嗯,正常:

function MyLittleHouseB(name) { 
    this.age = 88; 
    this.name = name; 
    //do some more proceduaral stuff upon 'construction' 
    this.age = this.age + 20; 
    this.getName = function() 
    { 
     return this.name; 
    } 
} 

我找到一个更优雅(并有多个对象我想变成可配置的选项......),但可能想在创建实例时做更多的事情,因此我需要如B所示。

这些可以混合使用吗?

¡Thanx!

+1

请不要删除这样的问题。要么完全删除它(在你的问题下应该有一个删除按钮),或者把它留下,即使你不再需要这个答案。人们已经回答了这个问题,这些信息留给其他人看,但是现在由于问题文本已经改变,答案没有意义。因此,决定是否要离开它,或者完全删除它。 – 2010-09-10 11:06:06

回答

3

您的第一个选项不使用对象表示法。如果你想使用对象符号,你可以写这样的事情:

function MyLittleHouse(name) { 
    var age = 88; 
    age += 20; 
    return { 
     getName: function() { 
      return name; 
     } 
    } 
} 

这有没有使用this,这意味着你避免与this结合的任何问题的优势。它还隐藏了agename,这可能是也可能不是所希望的 - 因为它代表着无法访问,而name是不可变的,因为它只能通过getName读取。如果您想将age作为正常字段公开:

function MyLittleHouse(name) { 
    var age = 88; 
    age += 20; 
    return { 
     age: age, 
     getName: function() { 
      return name; 
     } 
    } 
} 
+0

迈克尔,很好的回答!好得多,然后我非常错误的问题!事实上,我正在处理所有这些“这个”麻烦。这将帮助我大好时间......另外我喜欢“配置对象”冒号样式... – 2010-09-10 13:45:33