首页 > 语言 > JavaScript > 正文

面向对象的Javascript之一(初识Javascript)

2024-05-06 14:22:33
字体:
来源:转载
供稿:网友
1. Javascript最大的特性在于其灵活性。作为一名前端开发人员,既可以采用函数式的编程风格,也可以采用更复杂一点的面向对象的编程风格。不管你采用哪种风格,都可以完成一些非常有用的任务。因而,Javascript是一门面向过程的语言,同时也是一门面向对象的语言,进而可以模仿面向对象语言的编程模式和惯用法。我们用一个例子来说明:启动和停止动画。

如果你习惯于函数式的编程风格,代码会如下:
代码如下:
function startAnimation() {
//启用动画
}
function stopAnimation() {
//停止动画
}

这种方法很简单,但却无法创建保存状态以及仅对内部状态进行操作的动画对象。下面我们定义一个类:
代码如下:
var Animation = function() {
//动画类
};
Animation.prototype.start = function() {
//启用动画
};
Animation.prototype.stop = function() {
//停止动画
};
/*用法如下*/
var anim = new Animation();
anim.start();
anim.stop();

如果你想将类的定义封装到一条声明中,则代码如下:
代码如下:
var Animation = function() {
//动画类
};
Animation.prototype = {
start: function(){
//启用动画
},
stop: function(){
//停止动画
}
};

这样让面向对象的程序员看起来更加眼熟,我们可以试着尝试更复杂一点的写法:
代码如下:
Function.prototype.method = function(name, fn){
this.prototype[name] = fn;
}
var Animation = function() {
//动画类
};
Animation.method("start", function(){
//启用动画
});
Animation.method("stop", function(){
//停止动画
});

我们为Function类扩展了一个方法method用于添加新方法。name代表函数名称,fn代表函数的具体实现。在基于此写法的基础之上,我们可以让函数支持链式调用:
代码如下:
Function.prototype.method = function(name, fn){
this.prototype[name] = fn;
return this;
}
var Animation = function() {
//动画类
};
Animation.method("start", function(){
//启用动画
}).method("stop", function(){
//停止动画
});

至此已经见识了5种不同的编程风格,具有不同的代码量、编码效率和执行性能。你可以选择最适合当前项目的编程风格来进行工作。

2. Javascript是一门弱类型语言。声明变量时不必指定类型,但并不代表没有类型。Javascript包含三种基本类型:布尔型、数值型和字符串类型,此外还包含对象类型和函数类型,最后还包含空类型和未定义类型。基本类型按值传递,其他类型按引用传递。可以根据变量赋值改变类型,基本类型之间可以相互转换。toString()可以把数值或布尔值转化为字符串,parseInt()和parseFloat()可以将字符串转化为数值,双"非"操作可以将字符串或数值转化为布尔值。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选