WEB开发网
开发学院网页设计JavaScript 关于prototype.js的一些技术说明 阅读

关于prototype.js的一些技术说明

 2010-09-14 13:11:41 来源:WEB开发网   
核心提示: 这是 https://compdoc2cn.dev.java.net/ 上举的例子,个人感觉没什么意思,关于prototype.js的一些技术说明(3),反而让我对bind,bindAsEventListener有些反感,(javascript就是这样,实现类似继承方法的概念,看以下代码,

这是 https://compdoc2cn.dev.java.net/ 上举的例子,个人感觉没什么意思,反而让我对bind,bindAsEventListener有些反感。(javascript就是这样,明明大家都知道的语法,但写出来的代码差别确很大)

看下面代码:

<script src="prototype1.3.1.js"></script>
<input type=checkbox id=myChk name="chk" value=1> Test
<script>
function Class(){
  this.name="class";
}
Class.prototype.getName=function(){
  alert(this.name);
}
var obj=new Class();
//$('myChk').onclick=obj.getName;
$('myChk').onclick=obj.getName.bind(obj);
//$('myChk').onclick=obj.getName.bind($('myChk'));
</script>

从上面代码可以看出bind/bindAsEventListener只是包装了一下apply/call方法,改变方法的调用对象。如例子,你可以把obj.getName方法转化成任何对象调用,并且把方法让表单元素触发。(bind和bindAsEventListener之间只是返回函数的参数不同)

这两个方法也可以用在对象之间的方法重用,实现类似继承方法的概念。看以下代码,其实是比较无聊的。

<script src="prototype1.3.1.js"></script>
<script>
function Class1(name){
  this.name=name;
}
Class1.prototype.getName=function(){
  alert(this.name);
}
function Class2(name){
  this.name=name;
  this.getName=Class1.prototype.getName.bind(this);
}
var obj1=new Class2("yql");
obj1.getName();
var obj2=new Object();
obj2.name="zkj";
obj2.fun=Class1.prototype.getName.bind(obj2);
obj2.fun();
</script>

上一页  1 2 3 4  下一页

Tags:关于 prototype js

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接