typeof、constructor和instanceof】的更多相关文章

在JavaScript中,我们经常使用typeof来判断一个变量的类型,使用格式为:typeof(data)或typeof data.typeof返回的数据类型有六种:number.string.boolen.object.function.undefined.但是,对于Array和Date类型的变量,typeof返回的结果都是object,这使我们无法区分具体的数据类型.这时可以使用constructor或instanceof来判断. constructor返回变量的构造函数,而instanc…
ref: http://jingyan.baidu.com/article/29697b912f9939ab20de3c8c.html…
在JavaScript中,运算符“typeof”和“instanceof”都可以用来判断数据的类型,那么这两个运算符有什么不同之处呢? 差异一:使用方式不同. 最明显的差异就是这两个运算符的使用方式了.“typeof”是一元运算符,其后直接跟需要进行类型判断的数据:而“instanceof”是二元运算符,其左侧是需要判断的数据,右侧是用于比较的类型. //typeof是一元运算符: var amount = 108; console.log(typeof amout);//控制台输出“numbe…
说到这两个属性,那不得不说一下_proto_这个属性,通常这个属性是隐藏属性,是不允许被暴露的,而某些浏览器为了开发者能够很好的理解,而将这个属性暴露出来,比如Mozilla FireFox,这就是为什么有些同学在我的上一节文章测试代码的时候打印不出来了. 不扯远了,先来看一下instanceof 这个关键字,学过java类似的高级语言都应该知道吧 instancaof是用来检测这个实例是不是由这个类所创建的,换言之,就是检测这个实例对象是不是这个类new出来的. 看一段代码 function…
typeof主要用于检测变量是不是基本数据类型 typeof操作符是确定一个变量是字符串.数值.布尔类型,还是undefined的最佳工具.此外,使用typeof操作符检测函数时,会返回"function" 如果变量的值是一个对象或者null,typeof会返回"object" 在检测引用类型的值时,typeof的用处不大.一般来说,我们不想知道某个值是对象,而是想知道他是什么类型的对象. 如果变量是给定引用类型(根据他的原型链来识别)的实例,那么instanceo…
在Javascript不存在类(Class)的概念,javascript中不是基于类的,而是通过构造函数(constructor)和原型链(prototype chains)实现的.但是在ES6中引入了Class(类)这个概念,作为对象的模板.通过class关键字,可以定义类.基本上,ES6的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让原型对象的写法更加清晰.更像面向对象编程的语法而已. 1.构造函数的简单介绍 构造函数就是提供了一个生成对象的模…
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.l…
在JavaScript中,我们经常使用typeof来判断一个变量的类型,使用格式为:typeof(data)或typeof data.typeof返回的数据类型有六种:number.string.boolen.object.function.undefined.但是,对于Array和Date类型的变量,typeof返回的结果都是object,这使我们无法区分具体的数据类型.这时可以使用constructor或instanceof来判断. constructor返回变量的构造函数,而instanc…
//var 变量X --> 对象 --> 构造器 --> 原型对象 function Person(){}; var stu = new Person(); //var stu = new Person.constructor();//等效 //instanceof:用来确定一个实例是否是由特定函数构造器所创建的;还可以用于判断函数是否继承了其原型链中任何对象(必须要了解:原型链) stu instanceof Person;//true typeof stu; // "obj…
数据类型 ECMAScript中有5中基本数据类型:Undefined Null Boolean Number String. Typeof运算符 对一个值使用typeof操作符可能返回下列某个字符串: ‘undefined’——如何这个值未定义 ‘boolean’——如果这个值是布尔值 “string”——如果这个值是字符串 “number”——如果这个值是数值 “object”——如果这个值是对象或者null “function”——如果这个值是函数 调用typeof null 会返回“ob…
Use instanceof for custom typesvar ClassFirst = function () {};var ClassSecond = function () {};var instance = new ClassFirst();typeof instance; // objecttypeof instance == 'ClassFirst'; //falseinstance instanceof Object; //trueinstance instanceof Cl…
经常有人会在JavaScript里写如下的方法: function checkType() { var s1 = 123; var s2 = "OK"; if (s1 instanceof Number) { alert("s1 is a number."); } if (s2 instanceof String) { alert("s2 is a String."); } } 问题在哪里呢? 首先我们要理解,JS里,var本身是一个泛型,它并不…
typeof用以获取一个变量的类型,typeof一般只能返回如下几个结果:number,boolean,string,function,object,undefinedinstanceof用于判断一个变量是否某个对象的实例 Use instanceof for custom types: var ClassFirst = function () {}; var ClassSecond = function () {}; var instance = new ClassFirst(); typeo…
在JavaScript中我们想得到一个变量的类型,我们一般会用typeof 得到这个类型的 字符串,但是对于引用类型,typeof始终会返回一个"object",在我们js中有十个内置对象,我们无法分清楚他们具体是哪个对象,所有instanceof出现了. 1.instanceof方法能准备的识别变量的所属具体对象,示例 var num = new Number(10); console.log(num instanceof Number);//返回true var num = 10;…
js中判断一个变量的类型,通常的做法是用typeof方法,看它返回的是 什么,但是对于数组和对象它返回的都是object,ECMAScript引入了java中的instanceof 方法来弥补这一缺陷,来判断该变量是否是某种类型,它的返回值只有true和false. 一.typeOf 二.instanceof [] instanceof Object //false [] instanceof Array //true {} instanceof Object // true {} instan…
JavaScript中typeof和instanceof可以用来判断一个数据的类型,什么时候选择使用typeof?什么时候选择使用instanceof? typeof运算符 typeof运算符返回值有以下几种 原始数据类型 typeof 123 // "number" typeof '123' // "string" typeof false // "boolean" 函数类型 function f() {} typeof f // "…
typeof Array, Object, new Class() 都会返回'object', 所以使用typeof不能准确的判断变量是否为object typeof [];  //object typeof {};  //object typeof new (function (){});  //object ;  //number ';  //string typeof null;  //object typeof true;  //boolean    要准确判断一个变量是否是一个对象,可…
参考链接:https://www.talkingcoder.com/article/6333557442705696719 先看typeof <!doctype html> <html lang="en">     <head>         <meta charset="UTF-8" />         <script type="text/javascript" src="&…
JavaScript语言的原型是前端开发者必须掌握的要点之一,但在使用原型时往往只关注了语法,其深层的原理并未理解透彻.本文结合笔者开发工作中遇到的问题详细讲解JavaScript原型的几个关键概念,如有错误,欢迎指正. 1. JavaScript原型继承 提到JavaScript原型,用处最多的场景便是实现继承.然而在实现继承时总有一些细节处理不到位,引起一些看起来莫名其妙的问题.比如使用下述代码: function Animal(){} Animal.prototype = {}; func…
使用JS也算有段时日,然对于数组的使用,总局限于很初级水平,且每每使用总要查下API,或者写个小Demo测试下才算放心,一来二去,浪费不少时间:思虑下,堪能如此继续之?当狠心深学下方是正道. 原文链接: http://www.jeffjade.com/2015/09/25/2015-09-25-js-array 一, 数组常用方法 1. 数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创…
一.ng-bing-html指令问题 需求:我需要将一个变量$scope.x = '<a href="http://www.cnblogs.com/web2-developer/">王大鹏</a>'绑定到angular的视图上,希望视图上显示的一个链接. 1.如果,我采用ng-bind="x",或者{{x}},我在视图看到的结果就是上面那个字符串,就说里面的都被转义了. 2.如果,我在用ng-bind-html,视图上什么都没有,并且会抛出一…
1.IE条件注释 条件注释简介 IE中的条件注释(Conditional comments)对IE的版本和IE非IE有优秀的区分能力,是WEB设计中常用的hack方法.条件注释只能用于IE5以上,IE10以上不支持. 如果你安装了多个IE,条件注释将会以最高版本的IE为标准. 条件注释的基本结构和HTML的注释(<!– –>)是一样的.因此IE以外的浏览器将会把它们看作是普通的注释而完全忽略它们. IE将会根据if条件来判断是否如解析普通的页面内容一样解析条件注释里的内容. 条件注释使用方法示…
Javascript有5种简单数据类型和一种复杂数据类型 基本数据类型:String,Boolean,Number,Undefined, Null 引用数据类型:Object(Array,Date,RegExp,Function) 1.typeof操作符 要检测一个变量是不是基本数据类型, typeof 操作符是最佳的工具. var s = "Nicholas"; var b = true; var i = 22; var u; var n = null; var o = new Ob…
Query插件,以备并希望在前端方面有所长进.请批评指正. 一,类型判断全解 JQuery判断类型扩展方法:$.type() /*type: function( obj ) { if ( obj == null ) { return obj + ""; } return typeof obj === "object" || typeof obj === "function" ? class2type[ toString.call(obj) ] |…
用面试题,复习一下,js基础. 1.综合题 function Foo() { getName = function () { alert (1); }; return this; } Foo.getName = function () { alert (2);}; Foo.prototype.getName = function () { alert (3);}; var getName = function () { alert (4);}; function getName() { aler…
要点:对Web标准的理解.浏览器差异.CSS基本功:布局.盒子模型.选择器优先级及使用.HTML5.CSS3.移动端开发 技术等 1.Doctype作用? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义? (1).<!DOCTYPE> 声明位于文档中的最前面,处于 <html> 标签之前.告知浏览器的解析器,用什么文档类型 规范来解析这个文档. (2).严格模式的排版和 JS 运作模式是  以该浏览器支持的最高标准运行. (3).在混杂模式中,页面以宽松的向后兼容的方式显…
我们可以通过构造器函数(简称构造函数)来创建对象: function Her(){ this.child = 'Jon'; } 为了使用该函数来创建对象,我们需要使用new操作符,例如: var she = new Hew(); she.child; // Jon 使用构造函数创建对象的好处就是她可以接受一些参数,下面我们就来修改一下上面的例子: function Her(name){ this.name = name; this.child = 'Jon; this.whoAreYou = f…
一.数据类型 5种基本数据类型:Null/Undefined/String/Boolean/Number 1种复杂数据类型:Object 二.数据类型检测 1.typeof 2.instanceof/constructor 3.Object.prototype.toString.call(value) 4.Object.prototype.toString 三.数据类型转换 JS内部提供不同数据类型的自动转换机制,在某处预期为某种类型而不是某种类型时,就会自动转换为预期类型,这就是我们常说的隐式…
引言 JavaScript这门语言有些场合的用法还是比较怪异的.这篇文章会尽量将这门语言特有的一些比较特殊的用法收集在一起.就当是平时开发时需要注意的地方吧. 特殊用法收集 1.!!用法 在JavaScript中经常看到判断一个对象是否有某一个属性或者在进行客户端检测的时候会出现!!这个用法.相信大家都看到过var isIE=!!document.all这样的代码把.那为什么需要使用!!呢? !!作用就在于:如果明确设置了对象中属性的值(非 null/undefined/0/""等值)…
对象使用和属性 JavaScript 中所有变量都可以当作对象使用,除了两个例外 null 和undefined. false.toString(); // 'false'[1, 2, 3].toString(); // '1,2,3'function Foo(){}Foo.bar = 1;Foo.bar; // 1 一个常见的误解是数字的字面值(literal)不能当作对象使用.这是因为 JavaScript 解析器的一个错误, 它试图将点操作符解析为浮点数字面值的一部分. 2.toStrin…