如何要其他类的方法拿到自己用呢?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>掺元类</title>
<script>
// 有时候我们想要获得本类中没有,其他类中有的方法。我们要如何做的呢?
// 定义一个方法比较多的类。
var A ={}; //是空对象要用到__proto__
A.showA =function (name) {
document.write(name+"糟糕,我是A的方法被调用了"+"<br>");
}
A.eat=function(){
document.write("我是来自A的方法");
}
function mixin(receivingClass,givingClass) {
for(methodName in givingClass){
if(!receivingClass.__proto__[methodName]){
receivingClass.__proto__[methodName]=givingClass[methodName];
}
}
}
var B ={}
mixin(B,A);
B.showA("我是B,我调用了您的方法,哈哈!");
B.eat();
// 我是B,我调用了您的方法,哈哈!糟糕,我是A的方法被调用了
// 我是来自A的方法
// 另外一种形式的写法,作用也是一样的,就是Prototype与__proto__的调用主体不一样而已
</script>
</head>
<body>
</body>
</html>
如果两个类的方法是通过function()来实现 构造的,并且扩展方法是通过
prototype来扩展的话,那么mixin就要这么写
function mixin(receivingClass,givingClass) {
for(methodName in givingClass.prototype){
if(!receivingClass.prototype[methodName]){
receivingClass.prototype[methodName]=givingClass.prototype[methodName];
}
}
}