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


最新文章

  1. 坦克大战,看你能坚持几秒 ~~Duang~~Duang
  2. 用ticons指令结合ImageMagickDisplay工具批量生成Android适应图片
  3. 【Codeforces 723B】Text Document Analysis 模拟
  4. 移动网页 -- CSS布局
  5. UIScrollView 原理详解
  6. 【Tyvj1601】魔兽争霸(主席树,树套树)
  7. [Latex]生成Vertical Timeline
  8. linux poll 学习
  9. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:4.安装Oracle RAC FAQ-4.6.重新配置与缷载11R2 Grid Infrastructure
  10. Uber将在泰国首推&quot;优步摩托&quot;服务
  11. Google Map API学习1
  12. Windows Open with Sublime Text
  13. XCode 6 出现 no identity found: Command /usr/bin/codesign failed with exit code 1 解决方法汇总
  14. 从lca到树链剖分 bestcoder round#45 1003
  15. Linux通过shell执行自动化部署
  16. ansible基本使用方法
  17. ORA-27300 ORA-27301 ORA-27302 skgpspawn3 CRS-2674
  18. Maven 学习笔记-maven属性
  19. sql 查询结果转百分比
  20. python装饰器语法

热门文章

  1. redis2.4.conf配置文件中文释意
  2. 2017-2018-2 20165218 实验四《Android开发基础》实验报告
  3. Hbase(一)基础知识
  4. python基础----文件处理
  5. 【数论】数论进阶-Preknowledge
  6. tomcat8 的 websocket 支持
  7. [DeeplearningAI笔记]卷积神经网络4.6-4.10神经网络风格迁移
  8. 《用Apache HttpClient实现URL重定向》
  9. springboot创建maven多模块项目
  10. conda 虚拟环境