在javascript中具有属性的函数?

在javascript中具有属性的函数?,javascript,properties,Javascript,Properties,我有一个对象参数,它有一个属性值。它就是这样定义的 var parameter = { value : function() { //do stuff } }; 我的问题是,在某些情况下,值需要有自己的名为length 我可以这样做吗?似乎在对象声明之后放置this.length=foo不起作用,也不起作用。parameter.value.length=foo应该起作用。运行以下命令: var obj = { method: function () {}

我有一个对象
参数
,它有一个属性
。它就是这样定义的

var parameter = {
    value : function() {
        //do stuff
    }
};
我的问题是,在某些情况下,值需要有自己的名为
length


我可以这样做吗?似乎在对象声明之后放置
this.length=foo
不起作用,也不起作用。

parameter.value.length=foo
应该起作用。运行以下命令:

var obj = {
    method: function () {}
};
obj.method.foo = 'hello world';
alert(obj.method.foo); // alerts "hellow world"

函数在技术上是对象,因此它们可以有自己的方法和属性。

问题似乎在于“长度”一词的选择。在JavaScript中,函数是对象,可以具有属性。所有函数都已具有length属性,该属性返回函数声明时使用的参数数。此代码适用于:

var parameter = {
    value : function() {
        //do stuff
    }
};

parameter.value.otherLength = 3;

alert(parameter.value.otherLength);

试试这个。它应该在以下方面发挥作用:

var parameter = {
  value : {
    length : ''
  }
}

var newLength = parameter.value.length = 10;
alert( newLength ); // output: 10

如果我理解你的问题,基本上,在对象文字表示法中,一个对象可以包含另一个对象,依此类推。因此,要访问内部对象及其属性,只需按照层次结构像往常一样进行点natation。在上面的例子中,先是“参数”,然后是内部对象“值”,然后是内部对象属性“长度”。

你的意思是从
value()
返回的对象需要有长度吗?不,我检查
value
的长度,然后像数组一样对其进行迭代。我相信Ken是正确的(我被击败了这个答案)…看到了吗,嗯,这让事情变得有趣。我选择length的原因是,在大多数情况下,value是一个数组,我希望函数在这个意义上看起来像一个数组。但是谢谢你,非常感谢你的第一个链接,肯。我有一个完全不同的问题:D您还可以尝试查看jQuery如何实例化自己——jQuery对象(jQuery查询的结果,例如
jQuery('*')
),使用
length
属性来模拟数组。不过,你在这里有很多选择!我的问题来自于将
值定义为一个函数,但如果我试图定义长度,则不会