文档章节

从js对象类型的判断,附call与apply方法的区别

黄正文
 黄正文
发布于 2012/12/26 18:34
字数 262
阅读 242
收藏 1

 今天看到dwr.engine.js,里面有一段判断data数据类型的方法

typeof返回object的时候,是不是感觉比较无语?
发现一个Object.prototype.toString.call(data);返回的是一个类型'[Object Array]'的字符串,
发到群里与基友分享,
基友回了个instanceof

这就有3种方法判断数据类型了。
其实这3种方法互为补充。
typeof适合基本数据类型和string类型
instanceof适合当typeof无能为力的时候,并要根据不同数据类型做不同的操作时
Object.prototype.toString.call(data)适合直接对类型进行输出的情况,注意,这个方法与data.toString()不是完全相同的,["a","b","c"].toString()就与Object.prototype.toString.call(["a","b","c"])不同

这里用到了.call方法
与之对应的还有一个.apply方法

说到这里,就说一个call与apply方法的区别

function fun(arg1,arg2,arg3)
{
   .....
}
var arg1 = "arg1";
var arg2 = "arg2";
var arg3 = "arg3";
var arg  = [arg1,arg2,arg3];
fun.call(this,arg1,arg2,arg3);
fun.apply(this,arg);

© 著作权归作者所有

黄正文
粉丝 14
博文 25
码字总数 14020
作品 0
巴南
程序员
私信 提问
JavaScript专题之模拟实现call和apply

本文共 1320 字,读完只需 5 分钟 概述 JS 函数 call 和 apply 用来手动改变 this 的指向,call 和 apply 唯一的区别就在于函数参数的传递方式不同,call 是以逗号的形式,apply 是以数组的形...

南波
2018/10/30
0
0
js基础-重新认识call,apply,bind[不看后悔系列]

函数原型链中的 apply,call 和 bind 方法是 JavaScript 中相当重要的概念,与 this 关键字密切相关,相当一部分人对它们的理解还是比较浅显,所谓js基础扎实,绕不开这些基础常用的API,这次...

OBKoro1
08/05
0
0
【愣锤笔记】一篇小短文让你彻底搞懂this、call、apply和bind

跟我左手右手一起慢动作,右手左手慢动作重复。额~貌似哪里有点不对劲哎?让我想想,右手?左手?慢动作??重复???重播???不对不对,是左手call,右手apply,一起来bind this。 额,...

var isArrayLike = function(collection) {
03/19
0
0
JS学习笔记之再理解一等公民--函数(基础篇)

定义函数的方式 两种方式: 函数表达式 函数声明语句 注:"[]"里的内容代表可选 区别一:函数表达式可以是匿名函数,函数声明必须要有函数名 例1: 对于有函数名的函数表达式,函数名的作用域...

大柚子08
2018/05/09
0
0
JavaScript继承详解(二)

文章截图 - 更好的排版 这一章我们将会重点介绍JavaScript中几个重要的属性(this、constructor、prototype), 这些属性对于我们理解如何实现JavaScript中的类和继承起着至关重要的作用。 ...

solu
2010/12/22
239
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx+tomcat配置https

1、nginx配置https和【proxy_set_header X-Forwarded-Proto $scheme;】 2、java代码: String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServe......

perofu
6分钟前
2
0
必看的Linux系统新手进阶老手心得

不知道从什么时候起,linux这个话题变得越来越普及,成为大家经常讨论的话题。无论在网络上还是实际生活中,竟然很多人都在纠结学习linux的问题。网络上给的答案千千万万,而却还有很多人踌躇...

Linux就该这么学
9分钟前
2
0
Spring Boot 配置元数据指南

1. 概览 在编写 Spring Boot 应用程序时,将配置属性映射到 Java bean 上是非常有用的。但是,记录这些属性的最好方法是什么呢? 在本教程中,我们将探讨 Spring Boot Configuration Proces...

liululee
12分钟前
2
0
foreach查找子类

$list = $menu_model -> menu_list();$parent_list = [];foreach ($list as $v){ if ($v['pid'] == 0) { $parent = $v; foreach ($list as $v1) ......

小小小壮
24分钟前
2
0
基于 HTML5 Canvas 实现的 TP-LINK 电信拓扑设备面板

前言 今天我们以真实的 TP-LINK 设备面板为模型,完成设备面板的搭建,和指示灯的闪烁和图元流动。 先来目睹下最终的实现效果:http://www.hightopo.com/demo/blog_tplink_20170511/index.h...

htdaydayup
30分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部