Javascript中的调用模式

tonwely_1984 2010-08-09 11:12:07
Javascript中一共有四种调用模式:
1.方法调用模式
2.函数调用模式
3.构造器调用模式
4.apply调用模式
...全文
134 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mycjzlove 2010-08-19
  • 打赏
  • 举报
回复
顶。。。LZ:this代表什么意思,麻烦解释下。。。。。。。。谢谢。。。。
WebAdvocate 2010-08-09
  • 打赏
  • 举报
回复
good
非常实用
tonwely_1984 2010-08-09
  • 打赏
  • 举报
回复
实例:
1.方法调用
<script type="text/javascript">
<!--
var myObject = {
value:0,
increment: function(inc){
this.value += typeof inc === 'number' ? inc : 1;
}
};
myObject.increment();
document.write(myObject.value + "<br />"); // result is 1

myObject.increment(2);
document.write(myObject.value + "<br />"); //result is 3
//-->
</script>

2.函数调用
<script type="text/javascript">
<!--

var myObject = {
value:0,
increment: function(inc){
this.value += typeof inc === 'number' ? inc : 1;
}
};

myObject.double = function(){
var that = this; //当以函数调用的时候this指向的是全局对象

function add(num1, num2){ return num1 + num2; };

var helper = function(){
that.value = add(that.value, that.value);
};

helper(); //以函数的形式调用 helper
}

myObject.double();
document.writeln(myObject.value);
//-->
</script>

3.构造器调用
<script type="text/javascript">
<!--
//创建一个名为Quo的构造器函数,它构造一个带有status属性的对象
var Quo = function(string){
this.status = string;
}

//给Quo所有实例提供一个名为get_status的公共方法
Quo.prototype.get_status = function(){
return this.status;
}

//构造一个Quo实例
var myQuo = new Quo("confused");

document.writeln(myQuo.get_status());
//-->
</script>

4.apply调用模式
<script type="text/javascript">
<!--
//创建一个名为Quo的构造器函数,它构造一个带有status属性的对象
var Quo = function(string){
this.status = string;
}

//给Quo所有实例提供一个名为get_status的公共方法
Quo.prototype.get_status = function(){
return this.status;
}

//构造一个包含status成员的对象
var statusObject = {
status:"A-OK"
}

var status = Quo.prototype.get_status.apply(statusObject);
document.writeln(status);
//-->
</script>

WebAdvocate 2010-08-09
  • 打赏
  • 举报
回复
很good
建议lz辅以例子 和 兼容性测试
那么此帖就精彩了
tonwely_1984 2010-08-09
  • 打赏
  • 举报
回复
楼上的大牛帮忙分析分析一下this关键字部分。
tonwely_1984 2010-08-09
  • 打赏
  • 举报
回复
算在第四种里面。。。。
WebAdvocate 2010-08-09
  • 打赏
  • 举报
回复
还有call和callee呢
mochimo 2010-08-09
  • 打赏
  • 举报
回复
貌似只说了现象没有分析,特别是this关键字部分。
中午听说了个去百度面试的好玩问题,百度的人说面试者没有说清this的作用域……
他们可真逗啊
貌似是把两个概念搞混淆了。

5,006

社区成员

发帖
与我相关
我的任务
社区描述
解读Web 标准、分析和讨论实际问题、推动网络标准化发展和跨浏览器开发进程,解决各种兼容性问题。
社区管理员
  • 跨浏览器开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧