您的位置:首页 > Web前端 > JavaScript

Javascript 面向对象机制的实现

2010-02-26 16:33 633 查看
Javascript 面向对象机制的实现

自定义类的实现方法很多,重点谈两种。

构造函数法

function Player(url){
this.url = url;

this.showUrl = function(){
alert(this.url);
}

this.play = function(){
// do play
}
}

var myPlayer = new Player("test.mp3");
myPlayer.showUrl();
alert(myPlayer instanceof Player);

优点:类被封装成一个整体 声明实例用new运算符
缺点:对象的方法会重复生成

function Player(url){
this.url = url;

if(typeof Player._initialized == "undefined"){
Player.prototype.showUrl = function(){
alert(this.url);
Player._initialized = true;
}
}
}

var myPlayer = new Player("test.mp3");
myPlayer.showUrl();
alert(myPlayer instanceof Player);

优点:避免了函数的重复创建
缺点:麻烦一点

访问权限
JavaScript 本身并没法区分私有变量和公共变量,通常在命名上区分一下,一般习惯在私有变量的前加一个下划线 this._privateProperty。
有var声明的局部变量可以当作私有变量,this引导的为共有对象。

事件
function Player(url){
this.url = url;
var self = this;
var position;

this.onPositionChange = null; // 事件定义

this.setPosition = function(value){
self.position = value;

if (this.onPositionChange)
this.onPositionChange(this); //事件触发
}

}

var myPlayer = new Player("test.mp3");
myPlayer.onPositionChange = function fun(obj){ //事件订阅
alert(obj.position + 's Position Change');
}

myPlayer.setPosition(100);

实例化
可以使用类JSON的语法实例化一个对象:
var myPlayer = new Player("test1.mp3");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: