0

这是我无法解决的问题。我有一个名为Person的对象。我添加了一个名为changeCol(el, col)的方法,它需要两个参数,一个是对元素的引用,另一个是颜色属性。所以当我们调用这个方法时,这将改变元素的颜色。现在我将一个新方法附加到名为changeSize(size);的对象上。. 它需要一个称为(大小)的参数。现在的疑问是当我将第二种方法调用到一个元素时,我也想改变颜色并增加字体大小。

在第一种方法中,我参考了元素并更改了颜色。所以,同样的事情我不想在第二种方法中重复。那么,如何将第一个方法的参数继承给第二个方法。

这是到目前为止的代码 -

function Person(){

}
Person.prototype.changeCol = function(el, col){
  var elem = document.getElementById(el);
  elem.style.color = col;
};

Person.prototype.changeSize = function(size){

};



//here we are calling the method
var foo = new Person();
foo.changeCol('paragraph', 'blue');// this is working fine.
foo.changeSize('45px'); // this method will change the size and color as well.
4

2 回答 2

0

您可以在创建人员使用时设置 elemthis.elem或检查是否设置了 elem。

function Person(elemID){
  // could set the elem here
  this.elem=false;
}
Person.prototype.changeCol = function(el, col){
  this.elem = this.elem || document.getElementById(el);
  this.elem.style.color = col;
};
Person.prototype.changeSize = function(size){
  this.elem = this.elem || document.getElementById(el);
  ...
};
于 2013-08-06T12:09:50.197 回答
0

也许我在这里遗漏了一些东西,但我不明白你期望它如何工作。

 var person1 = new Person();
 person1.setSize("45px");   // what should color be set to?

 var person2 = new Person();
 person2.changeColor("p1", green);

 var person3 = new Person();
 person3.setSize("45px");   // what us your intention now?

函数根本不会相互继承。如果要在所有实例中为 el 和 color 设置默认值,请将它们设置为原型属性。

于 2013-08-06T12:17:36.273 回答