2015-10-06 86 views
3

如果我想设置原型,我需要做的总是在函数/对象之外。我想这样做与this.prototype ...JavaScript设置原型与this.prototype

例如:

MyPrototype = function() { 
    this.name = "MyPrototype"; 
    this.number = 3; 
} 
MyObjectToExtend = function() { 
    this.prototype = new MyPrototype(); //<-- I want this 
    this.name = "MyObjectToExtend"; 
} 
o = new MyObjectToExtend(); 

如果我想获得o.number我会得到什么。但它有可能与o.prototype.numer访问它,但我不认为这是你应该如何得到它,因为波纹管例如工作正常...

MyPrototype = function() { 
    this.name = "MyPrototype"; 
    this.number = 3; 
} 
MyObjectToExtend = function() { 
    this.name = "MyObjectToExtend"; 
} 
MyObjectToExtend.prototype = new MyPrototype(); //<-- I don't want this 
o = new MyObjectToExtend(); 

现在我可以访问o.number,它会给因为它应该是我的3

但我不想这样,我想设置的原型在上面例子...

+6

你想要的问题是它不起作用。你不想做的事情。 Javascript是一个像这样的情绪过山车,迫使你写代码工作 –

+1

你可能会在这里找到答案:http://stackoverflow.com/a/9516739/115493 – mik01aj

+0

@JaromandaX这可能是'原型'。我只想用'MyObjectToExtend'来分享属性和函数,而不需要在“构造/定义”之外添加大量代码(我不是专家,希望这被称为是正确的),我可以在那里扩展它们...... – TheEquah

回答

0

在这种情况下,this关键字是您的类的实例的引用。有一个名为__proto__的属性,允许您更改此特定实例的原型的值,但不建议使用它的使用,并且在此情况下它不会影响您班级的其他实例。

您可以使用Object.getPrototypeOf(this).number = 3向您的原型添加属性,但是如果不使用MyObjectToExtend.prototype = new MyPrototype();__proto__,则无法更改原型的值。