这两种结构有什么区别?
function ObjectName()
{
this.member1 = "foo"; // #1
ObjectName.member2 = "baz"; #2
}
只是两种方式说同样的事情,或者第二种方式宣布的成员有不同的属性?它对继承的对象有不同的作用吗?
答案 0 :(得分:1)
它做了两件不同的事情。
this.member1 = "foo":
使用new
调用时,在创建的对象实例上设置member1属性new ObjectName().member1 === 'foo';
在函数上设置属性仅设置在函数对象
上ObjectName.member2 = 'baz';
ObjectName.member2 === 'baz';
myObjInstance.member2 === undefined
那是因为function关键字确实设置了一个变量,它是:
的简写var ObjectName = function() {
作为一个对象,你可以设置你想要的任何属性,但它只能在那个对象上。
答案 1 :(得分:1)
我同意@Matt,但简而言之,我会说第一个(member1)是一个实例属性,第二个(member2)是一个静态属性,如果你熟悉OOP。