这两种构造有什么区别?

function ObjectName()
{
    this.member1 = "foo"; // #1
    ObjectName.member2 = "baz"; #2
}


是说同一件事的两种方式,还是成员宣布第二种方式具有某些不同的属性?在继承的对象上,它的工作方式是否不同?

最佳答案

它做两件事。

this.member1 = "foo":


在使用new调用时,在创建的对象实例上设置member1属性

new ObjectName().member1 === 'foo';


在功能上设置属性只能在功能对象上设置

ObjectName.member2 = 'baz';
ObjectName.member2 === 'baz';
myObjInstance.member2 === undefined


这是因为function关键字确实设置了一个变量,它是以下各项的简写形式:

var ObjectName = function() {


作为对象,您可以设置所需的任何属性,但只能在该对象本身上。

关于javascript - 通过此/类名的Javascript成员访问器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22308196/

10-12 13:41