这是一个我无法解决的问题。我有一个名为 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.
答案 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设置默认值,请将它们设置为原型属性。