最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

利用javascript中的call实现继承_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 20:34:34
文档

利用javascript中的call实现继承_javascript技巧

利用javascript中的call实现继承_javascript技巧:昨天阿丹传了一个javascript中的重载例子给我,感觉不错.虽然到现在还是不太明白.怎么实现的.但还是贴出来. 实现setTimeout传object对象 看以下代码实现向里面的function 传参数 var _st = window.setTimeout; window.setTimeo
推荐度:
导读利用javascript中的call实现继承_javascript技巧:昨天阿丹传了一个javascript中的重载例子给我,感觉不错.虽然到现在还是不太明白.怎么实现的.但还是贴出来. 实现setTimeout传object对象 看以下代码实现向里面的function 传参数 var _st = window.setTimeout; window.setTimeo


昨天阿丹传了一个javascript中的重载例子给我,感觉不错.虽然到现在还是不太明白.怎么实现的.但还是贴出来.
实现setTimeout传object对象
看以下代码实现向里面的function 传参数

var _st = window.setTimeout;
window.setTimeout = function(fRef, mDelay) {
if(typeof fRef == 'function'){
var argu = Array.prototype.slice.call(arguments,2);
var f = (function(){ fRef.apply(null, argu); });
return _st(f, mDelay);
}
return _st(fRef,mDelay);
}
function test(x){
alert(x);
}
window.setTimeout(test,1000,'fason');

call方法JScript参考中的说明:调用一个对象的一个方法,以另一个对象替换当前对象。call([thisObj[,arg1[, arg2[, [,.argN]]]]]),但是没有示例
apply方法JScript参考中的说明:应用某一对象的一个方法,用另一个对象替换当前对象。apply([thisObj[,argArray]])
实际上这两个的作用几乎是相同的,要注意的地方是call(thisObj[,arg1[, arg2[,)中的arg参数可以是变量,而apply([thisObj[,argArray]])中的参数为数组集合。

今早又看到一篇利用call实现继承的例子.呵呵..也一并贴出来.这个例子比较简单.就算是由浅入深吧

function father(){//父类

var self=this; //私有变量,子类里不会继承!

var var_private="private variable"; //私有变量

this.var_public="public variable"; //公有变量

this.author="xling";

this.test=function(msg){ //公有方法

alert("该方法位于父类 :" + msg + "\n" + self.author);

}

var test2=function(){ //私有方法,子类不能调用

alert("这个方法是父类的私有方法");

}

}

function father2(){

this.email="xlingFairy#hotmail.com";

}

function suber(){//子类

father.call(this);//通过这一句来继承父类(father)类的可见变量及方法(this)

}

function sun(){

suber.call(this);

father2.call(this);//和上面的一句放在一起,實現多重繼承!爽啊!

}

var mySuber=new suber();

mySuber.test("参数是从子类的实例里传入的");

//mySuber.test2(); //这一句会发生错误码,因为test2是父类的私有类

alert("父类的私有变量,子类不能读取:" + mySuber.var_private);

alert("父类的公有变量,子类可以读取" + mySuber.var_public);

var mySun=new sun();

mySun.test("这个是从孙子级的实例里传入的参数");

alert("父类的私有变量,子类不能读取:" + mySun.var_private);

alert("父类的公有变量,子类可以读取" + mySun.var_public);

alert(mySun.email);

文档

利用javascript中的call实现继承_javascript技巧

利用javascript中的call实现继承_javascript技巧:昨天阿丹传了一个javascript中的重载例子给我,感觉不错.虽然到现在还是不太明白.怎么实现的.但还是贴出来. 实现setTimeout传object对象 看以下代码实现向里面的function 传参数 var _st = window.setTimeout; window.setTimeo
推荐度:
标签: 使用 call 实现
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top