前端开发面向对象_继承

游戏开发是前端吗
前端游戏开发
游戏开发转行前端

传值or传址:
传值:数值型、布尔型、字符型等基本数据类型
传址:数值、hash对象等复杂数据类型,在进行赋值时会直接用内存地址赋值

call()方法
call() 方法是与经典的对象冒充方法最相似的方法。它的第一个参数用作 this 的对象。其他参数都直接传递给函数自身。例如:
[code]function sayColor(sPrefix,sSuffix) {
alert(sPrefix + this.color + sSuffix);
};
var obj = new Object();
obj.color = “blue”;
sayColor.call(obj, “The color is “, “a very nice color indeed.”);[/code]
继承:
[code]function ClassB(sColor, sName) {
ClassA.call(this, sColor);
this.name = sName;
this.sayName = function () {
alert(this.name);
};
}[/code]
apply()方法
apply() 方法有两个参数,用作 this 的对象和要传递给函数的参数的数组。例如:
[code]function sayColor(sPrefix,sSuffix) {
alert(sPrefix + this.color + sSuffix);
};
var obj = new Object();
obj.color = “blue”;
sayColor.apply(obj, new Array(“The color is “, “a very nice color indeed.”));
[/code]
继承:
[code]function ClassB(sColor, sName) {
ClassA.apply(this, new Array(sColor));
this.name = sName;
this.sayName = function () {
alert(this.name);
};
}[/code]
同样的,第一个参数仍是 this,第二个参数是只有一个值 color 的数组。可以把 ClassB 的整个 arguments 对象作为第二个参数传递给 apply() 方法:
[code]function ClassB(sColor, sName) {
ClassA.apply(this, arguments);
this.name = sName;
this.sayName = function () {
alert(this.name);
};
}[/code]
封装好的一个用来继承的extend函数:
[code]function extend(subClass,superClass){
var F=function(){};
F.prototype=superClass.prototype;
subClass.prototype=new F();
subClass.prototype.constructor=subClass;
subClass.superclass=superClass.prototype;
if(superClass.prototype.constructor==Object.prototype.constructor){
superClass.prototype.constructor=superClass;
}
}[/code]

可供演示的源码,欢迎大家的指正:
代码片段 1

<!DOCTYPE html>
<html lang=”en”>
    <head>
        <meta Charset=”UTF-8″ />
    </head>
    <body></body>
    <script type=”text/javascript”>
        function extend(subClass, superClass) {
            var F = function() {}
            F.prototype = superClass.prototype
            subClass.prototype = new F()
            subClass.prototype.constructor = subClass
            subClass.superclass = superClass.prototype
            if (
                superClass.prototype.constructor == Object.prototype.constructor
            ) {
                superClass.prototype.constructor = superClass
            }
        }
        function Animal(name) {
            this.name = name
            this.type = ‘animal’
        }
        Animal.prototype = {
            say: function() {
                alert(“I’m a(an) ” + this.type + ‘,my name is ‘ + this.name)
            },
        }
        function Bird(name) {
            this.constructor.superclass.constructor.apply(this, arguments)
            this.type = ‘bird’
        }
        extend(Bird, Animal)
        Bird.prototype.fly = function() {
            alert(“I’m flying”)
        }
        var canary = new Bird(‘xiaoniao’)
        canary.say()
        canary.fly()
    </script>
</html>

补充:读者点击运行这段代码,然后在Chrome中设置断点调试,观察每个类的属性与行为。

前端游戏开发和后端游戏开发
游戏开发前端和后端
游戏开发属于前端还是后台
» 本文来自:前端开发者 » 《前端开发面向对象_继承》
» 本文链接地址:https://www.rokub.com/7625.html
» 您也可以订阅本站:https://www.rokub.com
赞(0)
64K

评论 抢沙发

评论前必须登录!