Javascript 面向对象机制的实现
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);
实例化
可
相关文档:
C#代码与javaScript函数的相互调用
问:
1.如何在JavaScript访问C#函数?
2.如何在JavaScript访问C#变量?
3.如何在C#中访问JavaScript的已有变量?
4.如何在C#中访问JavaScript函数?
问题1答案如下:
javaScript函数中执行C#代码中的函数:
方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中 ......
引言
想必君的悟性极高,可能你会这样想:如果在JavaScript 内置的那些如Object 和Function等函数的prototype上添加些新的方法和属性,是不是就能扩展JavaScript的功能呢?
那么,恭喜你,你得到了!
闭包模型
<script language="javascript">
function person(){& ......
<input type=button value=刷新 onclick="window.location.reload()">
<input type=button value=前进 onclick="window.history.go(1)">
<input type=button value=后退 onclick="window.history.go(-1)"> ......
js的Function对象在调用过程中具有一个arguoments属性,它是由脚本解释器创建的,这也是创建arguments对象唯一途径。arguments对象可以看做是一个Array对象,它具有length属性,可以通过序号访问每一个参数。而且,通过arguments 的callee属性可以获取对只在执行的Function对象的引用,如下 ......