javascript继承另一个函数的属性

时间:2013-08-06 12:06:13

标签: javascript oop object inheritance

这是一个我无法解决的问题。我有一个名为 Person 的对象。我添加了一个名为 changeCol(el,col)的方法它需要两个参数,一个是对元素的引用,另一个是te color属性。因此,当我们调用此方法时,这将更改元素颜色。现在我附加了一个名为 changeSize(size); 的对象的新方法。它需要一个名为(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.

2 个答案:

答案 0 :(得分:0)

您可以在使用this.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);
  ...
};

答案 1 :(得分: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设置默认值,请将它们设置为原型属性。