js09--函数 call apply
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type=text/javascript charset=utf-8>
var k = 10 ;
function test(){
this.k = 20;
}
alert(window.k);//10
alert(k);//10
test();//window.test()
alert(test.k);// undefined
alert(window.k);//20
alert(k);//20 var t = new test();
alert(t.k);//20
// this:this对象是指在运行时期基于执行环境所绑定的
// this总是指向调用者,也就是说 谁调用了我 我就指向谁
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type=text/javascript charset=utf-8>
function sum(x , y){
return x+y;
}
function call1(num1 , num2){
return sum(num1 , num2);//函数可以嵌套调用
}
console.log(call1(1,2));
/* 每一个函数都包含两个非继承而来的方法:call、apply。把方法动态加在对象上,给对象加一个已有的新方法,代码的复用。语句执行完对象就没有这个方法了。
使用call()、aplly()来扩充作用域的最大好处就是对象不需要与方法有任何耦合关系。 */
//call apply 把方法动态加在对象上,给对象加一个已有的新方法,代码的复用。简单的用法:绑定一些函数 用于传递参数 调用
function sum(x , y){
return x+y;
}
function call1(num1 , num2){
return sum.call(this , num1 , num2);//调用的方法-call-(对象,参数)
}
function apply1(num1 , num2){
return sum.apply(this , [num1,num2]);
}
alert(call1(10 , 20));
alert(apply1(20,40)); window.color = 'red';
var obj = {color:'blue'};
var obj2 = {color:'yellow'};
function showColor(){
alert(this.color);
}
showColor.call(window);
showColor.call(obj);//把方法加在对象上,给对象加一个已有的新方法。 // call方法的简单模拟与实现
//function 方法
function test1(a , b){
return a+b;
}
// 函数名字大写,表示是类,(规范)
function Obj(x, y){
this.x = x ;
this.y = y ;
return x*y;
}
var o = new Obj(10 , 20);//return对o没影响
o.method = test1 ;
alert(o.method(o.x , o.y));
delete o.method;//o不是{}格式,也可以删除方法属性,语句执行完对象就没有这个方法了 alert(test1.call(o,o.x ,o.y));//语句执行完对象就没有这个方法了 ===============================================================
function Obj(x, y){
this.x = x ;
this.y = y ;
this.say = function(){alert(123);}
return x*y;
}
function test1(a , b){
return a+b;
}
var o = new Obj(10 , 20);//return对o没影响 alert(o.x);
delete o.x;
alert(o.x);//undefined o.say();//123
delete o.say;
o.say();//o.say is not a function o.method = test1 ;
alert(o.method(o.x , o.y));//30
delete o.method;//语句执行完对象就没有这个方法了
alert(o.method(o.x , o.y));//o.method is not a function
</script>
</head>
<body>
</body>
</html>
js09--函数 call apply的更多相关文章
- Javascript中call函数和apply函数的使用
Javascript 中call函数和apply的使用: Javascript中的call函数和apply函数是对执行上下文进行切换,是将一个函数从当前执行的上下文切换到另一个对象中执行,例如: so ...
- 函数的apply、call方法和length属性
函数的apply.call方法和length属性JavaScript为函数对象定义了两个方法:apply和call,它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数的方式有所区别:Fu ...
- javascript中call函数与apply
javascript中的call方法使当前对象可以调用另一个对象的方法,即改变this的指向内容 var first_object = { num: 42 }; var second_object = ...
- pandas的map函数与apply函数的区别
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(4,3),columns=list("ABC ...
- [Effective JavaScript 笔记]第21条:使用apply方法通过不同数量的参数调用函数
apply()方法定义 函数的apply()方法和call方法作用相同,区别在于接收的参数的方式不同.apply()方法接收两个参数,一个是对象,一个是参数数组. apply()作用 1.用于延长函数 ...
- call,apply,bind函数
一.call函数 a.call(b); 简单的理解:把a对象的方法应用到b对象上(a里如果有this,会指向b) call()的用法:用在函数上面 var Dog=function(){ this.n ...
- javascript中函数的call,apply及bind方法
call 方法调用一个对象的一个方法,以另一个对象替换当前对象.call([thisObj[,arg1[, arg2[, [,.argN]]]]])参数thisObj可选项.将被用作当前对象的对象. ...
- 函数对象的call()、apply() 方法区别
函数对象的call().apply() 方法 函数作为对象提供了call(),apply() 方法,他们也可以用来调用函数,这两个方法都接受一个对象作为参数,用来指定本次调用时函数中this的指向: ...
- this、apply/call、bind、闭包、函数、变量复制
一.实际场景中抽象出的一个问题 下面this各指向什么? var a = { b: function() { console.log(this); }, f: function() { var c = ...
- R语言中apply函数
前言 刚开始接触R语言时,会听到各种的R语言使用技巧,其中最重要的一条就是不要用循环,效率特别低,要用向量计算代替循环计算. 那么,这是为什么呢?原因在于R的循环操作for和while,都是基于R语言 ...
随机推荐
- [HNOI2012]矿场搭建(割点)
[HNOI2012]矿场搭建 题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出 ...
- 使用maven安装jar到本地仓库
mvn install:install-file "-DgroupId={安装的jar包的groupid,可以随意起名}" "-DartifactId={安装jar包的I ...
- 去掉vs2010字符串下红色波浪线
由于在vs集成了qt库,无法提升代码. 所以下载了visual assist,然后新的问题出现了,凡是在vs中输入的字符串,下面都有红色的波浪线,而且没有错误,只是看着不舒服. 解决方法: 在VAss ...
- openCV 和GDI画线效率对照
一. 因为项目须要,原来用GDI做的画线的功能.新的项目中考虑到垮平台的问题.打算用openCV来实现.故此做个效率对照. 二. 2点做一条线,来測试效率. 用了相同的画板大小---256*256的大 ...
- Linux 6.2配置yum本地
yum 1.挂在iso文件 [root@localhostmedia]# mount /dev/cdrom /media 2.安装createrepo createrepo是配置YUM源的配置工具,检 ...
- Design Pattern - Service Locator Pattern--转载
原文地址:http://www.tutorialspoint.com/design_pattern/service_locator_pattern.htm The service locator de ...
- 【实用篇】获取Android通讯录中联系人信息
第一步,在Main.xml布局文件中声明一个Button控件,布局文件代码如下: <LinearLayout xmlns:android="http://schemas.android ...
- react 常用的ui库
1. https://ant.design/docs/react/introduce-cn ANT DESIGNui 2. http://www.material-ui.com/#/ Mate ...
- js创建dom操作select
document.getElementById("column-left").getElementsByTagName("header")[0].onclick ...
- SQLServer 查询最近一天,三天,一周,一月,一季度数据的方法
三天 select * from T_news where datediff(day,addtime,getdate())<= 2 and datediff(day,addtime,getdat ...