Apply和call方法-扩充函数赖以生存的作用域
2016-04-13 13:36
441 查看
在某个特殊对象的作用域中,调用方法。
例如:
第一个调用,person的属性和方法都被添加给了windows对象了,因为当在全局作用域中调用一个函数时,this总是指向global对象也就是windows对象。
第二个调用则可以理解为把person函数可以在o的作用域中调用,所以o也就有了所有的属性和方法
这两个方法都是用来改变作用域的,不同之处是传递参数的不同
Apply方法第一个参数是this对象,第二个参数是数组
Call方法第一个参数是this对象,以后的参数是值。
使用哪种方法,可以根据参数的类型决定。
例如:
function Person(name, age, job) { this.name = name; this.age = age; this.job = job; this.sayName = function () { alert(this.name); } } Person("YU", 29, "BB"); window.sayName(); //Yu var o = new Object(); Person.call(o, "YU", 29, "BB"); o.sayName(); //Yu
第一个调用,person的属性和方法都被添加给了windows对象了,因为当在全局作用域中调用一个函数时,this总是指向global对象也就是windows对象。
第二个调用则可以理解为把person函数可以在o的作用域中调用,所以o也就有了所有的属性和方法
这两个方法都是用来改变作用域的,不同之处是传递参数的不同
Apply方法第一个参数是this对象,第二个参数是数组
Call方法第一个参数是this对象,以后的参数是值。
使用哪种方法,可以根据参数的类型决定。
Apply function callsum1(num1,num2){ return Sum.apply(this,arguments); } function callsum1(num1,num2){ return Sum.apply(this,[2,3]); } Call function callsum1(num1,num2){ return Sum.call(this,num1,num2); }
相关文章推荐
- Android动画(ViewHelp/3D旋转)
- Android Studio advanced configuration
- Android系统自带样式(android:theme)
- 在方法中使用闭包
- Android中全局Application的onCreate多次调用问题
- android数据库sqlite基本操作。
- Android 如何动态设置View参数,LayoutParams.addRules详解,TypedValue.applyDimension的使用
- android沉浸式开发
- Android判断app是否后台运行中,后台运行通知栏提示
- Android studio继承BaseAdapter时不自动出现getCount等方法
- Android移动APP开发笔记——Cordova(PhoneGap)通过CordovaPlugin插件调用 Activity 实例
- toStirng()与Object.prototype.toString.call()方法浅谈
- iOS隐藏一个View(定时器)
- 解决android studio模拟器“is currently running"的方法
- Android自定义View — 用Canvas画带动画的渐变数字圆环
- android webview js alert对话框 不能弹出 解决办法
- iPhone4/4s运行iOS7慢怎么办
- android中xml tools属性详解
- iOS开发之Xcode pch头文件简单使用方法 让写代码更简单!
- 主动通知Android系统图库进行更新