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");
自定义类的实现方法很多,重点谈两种。
构造函数法
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");
相关文章推荐
- javascript 面向对象特性与编程实现
- C++面向对象特性实现机制的初步分析 Part1
- 面向对象在JavaScript中的接口实现
- javascript 面向对象特性与编程实现
- JavaScript从入门到放弃(3)-对象的不同创建方法-实现真正的面向对象
- Javascript面向对象特性实现(封装、继承、接口)
- Javascript基础与面向对象基础~第六讲 Javascript中的事件机制
- Javascript实现最简跨平台面向对象拖拽
- JavaScript面向对象简易实现
- JavaScript中的new-面向对象实现原理
- 不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
- javascript 面向对象,实现namespace,class,继承,重载
- 前端开发:面向对象与javascript中的面向对象实现(一)
- 基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
- JavaScript ES5面向对象实现一个todolist
- 前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型
- JavaScript实现面向对象中的类
- 【译】不用构造函数(Constructor)也能实现JavaScript的面向对象
- Javascript 类与静态类的实现-js面向对象
- Javascript实现最简跨平台面向对象拖拽