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 ...
随机推荐
- puppeteer 的PDD反爬经历
使用puppeteer 爬取PDD数据时出现要求登录,以前是没有这问题的. 尝试多种方式如果: 变更UA 变更代理IP 变更Chromium版本(当然最终就是该问题的原因,但是因为版本跨度太大没有测试 ...
- [Unity基础]镜头管理类
一个游戏中可能会有各种类型的镜头,例如有时候是第一人称,有时是第三人称,有时又会给个特写等等,因此可以定义一个镜头类型枚举,在不同的场合进行切换,管理起来很方便. CameraManager.cs u ...
- MySql 索引 查询 优化
官方文档: https://dev.mysql.com/doc/refman/5.7/en/explain-output.html#explain_rows type: 连接类型 system 表只有 ...
- nginx面试中最常见的18道题
1.请解释一下什么是Nginx? Nginx是一个web服务器和反向代理服务器,用于HTTP.HTTPS.SMTP.POP3和IMAP协议. 2.请列举Nginx的一些特性. Nginx服务器的特性包 ...
- 学习笔记:Vue
https://cn.vuejs.org/v2/api/ 官网API https://cn.vuejs.org/v2/guide/ 官网教程 http://www.runoob.com/vue2/vu ...
- 《算法》第二章部分程序 part 2
▶ 书中第二章部分程序,加上自己补充的代码,包括若干种归并排序,以及利用归并排序计算数组逆序数 ● 归并排序 package package01; import java.util.Comparato ...
- 《GPU高性能编程CUDA实战》第四章 简单的线程块并行
▶ 本章介绍了线程块并行,并给出两个例子:长向量加法和绘制julia集. ● 长向量加法,中规中矩的GPU加法,包含申请内存和显存,赋值,显存传入,计算,显存传出,处理结果,清理内存和显存.用到了 t ...
- SD-WAN供应商列表
SD-WAN的一个重要思想是,可以使用任何类型的多个物理WAN链路来承载流量,而无需网络工程师进行大量工程设计.相反,SD-WAN解决方案在物理基础设施之上运行覆盖(隧道),抽象出实际链接. SD-W ...
- 高程三 DOM对象
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- VMware设置cpu虚拟化,intel VT-x
1.关闭虚拟机 2.右键需要更改的虚拟机--设置--处理器