typeof、instanceof 与 constructor 详解

typeof  一元运算符

返回一个表达式的数据类型的字符串,返回结果为js基本的数据类型,包括number,boolean,string,object,undefined,function.

语法:typeof(data) 或 typeof data

实例:

var test = [123, true, "abc", {}, function() {}];
for(var i = 0; i <= test.length; i++) {
console.log(typeof test[i]);
}
// number
// boolean
// string
// object
// function
// undefine
注: typeof null == object  

instanceof  二元运算符

返回一个布尔值,该值指示一个对象是否为特定类的一个实例。

语法: object instanceof class

如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 class 存在于对象的原型链中(为 true),则该运算符返回 true。如果 object 不是 class 的实例,或 object 为 null,则该运算符返回 false。

其本质是判断  class.prototype 是否存在于object对象的原型链上,关于原型链请点击这里

实例:

function A(){

}
var a = new A();
console.log( a instanceof A);//true
console.log(a instanceof Object);//true

constructor 属性,存在于Object.prototype的属性

返回对象的构造函数

语法: object.constructor

返回值是函数的引用,不是函数名:

JavaScript 数组 constructor 属性返回 function Array() { [native code] }

JavaScript 数字 constructor 属性返回 function Number() { [native code] }

JavaScript 字符串 constructor 属性返回 returns function String() { [native code] }

如果一个变量是数组你可以使用 constructor 属性来定义。

实例:

function A(){

}
var a = new A();
console.log(a.constructor,a.constructor === A); //true
console.log(a.constructor === Object); //false
	

对象的构造器 constructor 是可以改变的,但我们一般不建议这样做,因为这样会使程序的逻辑混乱。

实例:

            function A(){

            }
function B(){ }
A.prototype.constructor = B;
var a = new A();
console.log(a.constructor,a.constructor === A); //false
console.log(a.constructor === B); //true


JavaScript 中typeof、instanceof 与 constructor 的区别?的更多相关文章

  1. Javascript中typeof instanceof constructor的区别

    typeof typeof,是一个运算符,运算中需要一个操作数,运算的结果就是这个操作数的类型,运算的结果是一个字符串.他有一定的局限性,对于对象类型的值,只能得到一个object结果,却不能精确得到 ...

  2. JavaScript中typeof、toString、instanceof、constructor与in

    JavaScript 是一种弱类型或者说动态语言.这意味着你不用提前声明变量的类型,在程序运行过程中,类型会被自动确定. 这也意味着你可以使用同一个变量保存不同类型的数据. 最新的 ECMAScrip ...

  3. JavaScript中typeof,instanceof,hasOwnProperty,in的用法和区别

    一. typeof操作符 typeof操作符用于返回正在使用值的类型. // 使用原始值 let mNull = null; let mUndefined = undefined; let mStri ...

  4. 【JavaScript中typeof、toString、instanceof、constructor与in】

    JavaScript中typeof.toString.instanceof.constructor与in JavaScript 是一种弱类型或者说动态语言.这意味着你不用提前声明变量的类型,在程序运行 ...

  5. javascript中typeof与instanceof的区别

    JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: typeof typeof 是一个一元运算,放在一个运算数之前 ...

  6. javascript中typeof和instanceof用法的总结

    今天在看相应的javascript书籍时,遇到了typeof和instanceof的问题,一直不太懂,特地查资料总结如下: JavaScript 中 typeof 和 instanceof 常用来判断 ...

  7. JavaScript中object和Object有什么区别

    JavaScript中object和Object有什么区别,为什么用typeof检测对象,返回object,而用instanceof 必须要接Object呢 ————————————————————— ...

  8. JavaScript中const、var和let区别浅析

    在JavaScript中有三种声明变量的方式:var.let.const.下文给大家介绍js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始 ...

  9. javascript 中 typeof 的使用

    javascript 中 typeof 的使用 javascript有五种基本的数据类型(简单数据类型),它们分别是:String.Undefined.Null.Boolean和Number.还有一种 ...

  10. JavaScript中值类型和引用类型的区别

    JavaScript的数据类型分为两类:原始类型和对象类型.其中,原始类型包括:数字.字符串和布尔值.此外,JavaScript中还有两个特殊的原始值:null和undefined,它们既不是数字也不 ...

随机推荐

  1. certutil在渗透测测试中的使用技巧

    certutil在渗透测测试中的使用技巧                                    0x01 前言 最近在Casey Smith‏ @subTee的twitter上学到了关 ...

  2. centos 6.5 web service模式 系统 安装php

    1 首先是坚持libxml2出问题,提示如下: checking for xml2-config path... /home/www/thirdlib/libxml2/bin/xml2-configc ...

  3. Android开发技术重要参考资料

    只言片语 有的时候看不懂别人的代码,觉得自己笨:其实,你想多了,看不懂不是因为你蠢而是别人的代码写得烂:所以,别那么宽容别人却苛责自己. 参考资料 郭霖 way 爱哥 有心 胡凯 robin trin ...

  4. Function.caller, arguments.caller, arguments.callee, arguments.callee.calller

    Function.caller指向当前函数的调用者,是arguments.caller的替代者 arguments.caller也是指向当前函数的调用者,已被废弃 arguments.callee是对 ...

  5. 2018南京ICPCMediocre String Problem 马拉车

    hash+二分求出最长公共前缀 然后马拉车+前缀和计数 #include <cstdio> #include <cstring> #include <queue> ...

  6. React读取Excel——js-xlsx 插件的使用

    介绍 SheetJS js-xlsx 是一款能够读写多种格式表格的插件,浏览器支持良好,并且能在多个语言平台上使用,目前在 github 上有 12602 个 star, 刚好项目中遇到了前端解析 e ...

  7. 维护前面的position+主席树 Codeforces Round #406 (Div. 2) E

    http://codeforces.com/contest/787/problem/E 题目大意:给你n块,每个块都有一个颜色,定义一个k,表示在区间[l,r]中最多有k中不同的颜色.另k=1,2,3 ...

  8. JavaScript 字符串操作:substring, substr, slice

    在 JavaScript 中,对于字符串的操作有 substring, substr, slice 等好多个内置函数,这里给大家推荐一篇介绍 substring, substr, slice 三者区别 ...

  9. 那些让 Web 开发者们深感意外的事情

    作为 Web 开发者,对自己的行业前景,人人都有自己的看法,然而,任何行业都有出人意料的地方.著名的 Web 开发设计博客 Nope.com 曾向他们的读者做了一个调查,请他们列举 Web 开发领域那 ...

  10. HOMEWORK-2

    没什么超乎常人的技能吧,我想.关于C的学习之前一直是自学,上了大学也是吃老底(上一篇提到了),因为这个学期一直在学matlab,C除了帮人写过作业教过课自己也没写点什么. 指针的概念还算清楚,毕竟经常 ...