2016-12-13 61 views
1

我正在处理下面的任务,找不到解决方案。我有构造函数(Tree)和使用它创建的对象(theTree)。现在我想添加新的函数(alter),它会改变构造函数的问候语值(所有使用它创建的新对象的问候),但也会添加现有对象。说实话,我不知道如何去那个函数中的构造器的属性。如果你能看一看,并建议从哪里开始,我将不胜感激。这是我走到这一步:用另一个函数更改构造函数的值JS

function Tree(name) { 
    this.name = name; 
    this.greeting = "Hi"; 
} 

var theTree = new Tree("Pine"); 
theTree.greeting = "hello"; 

var alter = function(constructor, greeting) { 
this.greeting = greeting;  
} 
+2

如果您希望所有实例共享一个值,请不要将其设置为每个实例的属性。 –

+4

把'问候'放在原型上。从构造函数中移除'this.greeting =',并将'alter'的主体改为'constructor.prototype.greeting = greeting;'。但是,这不会更改已经直接设置的实例的“问候”值。没有人知道创建了什么样的实例,除非你以某种方式自己跟踪它们。 –

+0

@torazaburo谢谢!这与原型完美无瑕。它还会更改在使用该函数之前创建的对象的问候值,而不是用于直接设置值但现在没问题的对象的问候值。 – Joanna

回答

0

greeting的原型。从构造函数中删除this.greeting =,并将alter的主体更改为constructor.prototype.greeting = greeting;

但是,这不会更改已经直接设置的实例的值greeting。没有人知道创建了什么样的实例,除非你以某种方式自己跟踪它们。

0
var alter = function(tmpObject,greeting){ 
tmpObject.greeting = greeting; 
console.log(tmpObject.greeting); 

} 

要改变函数传递你的构造函数和问候message.It会改变。

相关问题