js高级-函数的四种调用模式
1、对象方法调用模式 方法内部的this指向当前调用者的对象d
定义类 (构造函数)
function Dog (dogName){
//创建一个空对象 让空对象==this
this.name = dogName;
this.age = 0;
this.run = function(){
console.log(this.name + 'is running...')
}
//如果函数当做构造函数来调用(new)并且没有返回任何数据的时候 默认返回this
}
var d= new Dog('wangwang');
d.run();
2、构造器调用模式 new
function Cat(){
this.name = "cat"
this.age = 19;
this.run = function(){
console.log(this.name + 'is running...')
}
}
var cat = new Cat(); //构造函数调用模式
cat.run() //方法调用模式
3、函数调用模式
function f(a,b){
console.log(a+''+b)
console.log(this) window
}
f(2,3)
习题
function Dog(){
this.age = 19;
console.log(this)
}
Dog() //window 函数调用模式
var d = new Dog(); //d 构造函数调用模式
4、call apply 调用模式
function sum(a,b){
console.log(this)
return a+b
}
sum(1,2) //this->window
var t = {
name:'laoma'
}
var m = sum.call(t,2,3) //t 作为this传到函数里 sum方法里面的this 指向t sum不是直接调用了 而是用call去调用这个sum方法 同时修改了this指向
sum.apply(t,[2,3])
console.log(m)
//如果是number string 转化成包装类型 如果是null 还是原始的
sum.call(null,2,3) //window
sum.call(undefined,2,3) //window
//习题
借用Math.min方法 求数组最小值 [2,9,33]
Math.min.apply(null,[2,9,33])
把一个类数组转化成真数组 t = [1,true]
var t = {}
t[0] = 1;
t[1] = true;
t.length = 2;
Array.prototype.slice.call(t,0)
js高级-函数的四种调用模式的更多相关文章
- JS面向对象函数的四种调用模式
函数的四种调用模式 概念 在 js 中,无论是函数, 还是方法, 还是事件, 还是构造器,...这些东西的本质都是函数 函数, 方法, 事件, 构造器,...只是所处的位置不同 这四种模式分别是 函数 ...
- 函数的四种调用模式.上下文调用.call.apply
闭包:函数就是一个闭包,一个封闭的作用域; 返回函数,要返回多个函数就用一个对象封装一下, 立即执行函数+return 回调函数 JS动态创建的DOM,不会被搜索引 ...
- js中this的四种调用模式
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- javascript中函数的四种调用模式详解
介绍函数四种调用模式前,我们先来了解一下函数和方法的概念,其实函数和方法本质是一样,就是称呼不一样而已.函数:如果一个函数与任何对象关系,就称该函数为函数.方法:如果一个函数作为一个对象属性存在,我们 ...
- JS函数的四种调用模式
函数在js中具有四种身份,分别为函数.方法.构造函数.apply或call调用 函数调用 函数调用模式中this指全局对象(window) var f1 = function() { alert ...
- javascript函数的四种调用模式及其this关键字的区别
方法调用模式: 当一个函数被保存为对象的一个属性时,我们称它为一个方法.当一个方法被调用时,this被绑定到该对象. //方法调用模式 var myObject = { value: 0 , incr ...
- JavaScript (JS) 函数补充 (含arguments、eval()、四种调用模式)
1. 程序异常 ① try-catch语法 测试异常 try-catch语法代码如下: try { 异常代码; try中可以承重异常代码, console.log(“try”) 出现异 ...
- JS高级. 06 缓存、分析解决递归斐波那契数列、jQuery缓存、沙箱、函数的四种调用方式、call和apply修改函数调用方法
缓存 cache 作用就是将一些常用的数据存储起来 提升性能 cdn //-----------------分析解决递归斐波那契数列<script> //定义一个缓存数组,存储已经计算出来 ...
- JavaScript高级之函数的四种调用形式
主要内容 分析函数的四种调用形式 弄清楚函数中this的意义 明确构造函对象的过程 学会使用上下文调用函数 了解函数的调用过程有助于深入学习与分析JavaScript代码. 本文是JavaScript ...
随机推荐
- MySQL安装,库的操作
一 数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件 ...
- 【接口测试】【SOAP】简单的接口测试学习
==================================================================================================== ...
- js中script的上下放置区别 , Dom的增删改创建
回顾 javascript分为三部分: 1.ECMAScript5.0 es6(阮一峰) es7 es8 es6中有类的概念 声明变量 var let(es6中语法) 内置函数 Date Math.r ...
- QTimer的一些注意事项和探索
注意事项: 1.QTimer's accuracy depends on the underlying operating system and hardware.Most platforms sup ...
- promise请求数据用法
Promise简介 Promise 是异步编程的一种解决方案,比传统的解决方案–回调函数和事件--更合理和更强大.ES6将其写进了语言标准,统一了语法,里面保存着某个未来才回结束的事件(通常是一个异步 ...
- 2、申请苹果App ID
在“iOS Certificates”页面“Identifiers"下选择“App IDs",可查看到已申请的所有App ID,点击右上角的加号可创建新“App ID”:打开“Re ...
- iOS如何把所有页面状态栏的字体颜色都设置为白色
第一步:在info.plist中添加一个字段:view controller -base status bar 设置为NO 第二步:在一个所有界面都继承的父类里添加: if (IOS7_OR_LATE ...
- 《算法》第六章部分程序 part 2
▶ 书中第六章部分程序,包括在加上自己补充的代码,B-树 ● B-树 package package01; import edu.princeton.cs.algs4.StdOut; public c ...
- Yii框架中使用SRBAC作为权限管理模块时遇到的问题
Yii框架中使用SRBAC作为权限管理模块时遇到的问题 看到Yii中提供RBAC的插件,SRBAC,就想用用. 结果按照手册上的安装办法,整来整去,安装完了,可就是进不了权限管理界面. 最后想到, ...
- mysqld服务启动失败, Failed to restart mysqld.service: Unit not found.
-bash-4.2# service mysqld restart Redirecting to /bin/systemctl restart mysqld.serviceFailed to rest ...