1. typeof 操作符
  2. instanceof 操作符
  3. hasOwnProperty()方法
  4. isPrototypeOf()方法

  1.typeof

  用于获取变量的类型,一般只返回以下几个值:string,number,boolean,object,function,undefined.

  typeof作用于引用类型的时候,无论是什么类型的对象,都返回“object”. 

     alert(typeof false);//boolean
alert(typeof );//number
alert(typeof "hello Jame");
alert(typeof null);//object
alert(typeof [,,,]);//object
alert(typeof {name:"Jhon",age:});//object
alert(typeof function a(){});//function
alert(typeof new String("str"));//object

  String 与 string的区别:一个是引用类型 object,一个是值类型 string。

     var s = "hello Jame";
var Str = new String("hello Jhon");
alert(typeof s);//string
alert(typeof Str);//object

  凡是通过 new 操作符创建的变量,typeof运算的结果都是object.

     function myFun (){};
var a = new myFun();
alert(typeof a);//object
var b = function myFun1 (){};
alert(typeof b);//function
alert(typeof myFun1);//undefined

  2.instanceof

  用来判断一个实例是否属于某种类型。

  更重的一点是 instanceof 可以在继承关系中用来判断一个实例是否属于它的父类型。

     function ClassA(){}
  function ClassB(){}
  function ClassC(){}
  /**
   * 原型继承
   * ClassB继承自ClassA,ClassC继承自ClassB
   */
   ClassB.prototype = new ClassA();
   ClassC.prototype = new ClassB();      /**
   * 创建ClassB和ClassC的实例
   */
   var b = new ClassB();
   var c = new ClassC();
   alert(b instanceof ClassB);//true
   alert(b instanceof ClassA);//true
   alert(c instanceof ClassA);//true
   alert(c instanceof ClassB);//true
   alert(c instanceof ClassC);//true

  instanceof复杂用法

    alert(Object instanceof Object);//true
    alert(Function instanceof Function);//true   alert(Function instanceof Object);//true   alert(String instanceof String);//false
  alert(Number instanceof Number);//false
  alert(Boolean instanceof Boolean);//false

  要从根本上了解instanceof,需从以下两个方面着手:1、语言规范中如何定义该运算符。2、JavaScript的原型继承机制。

  推荐文章:JavaScript instanceof 运算符深入剖析

  3.hasOwnProperty()方法

  用来判断某实例是否具指定的名称属性或方法。是返回true,否则返回false。

   注意:该属性只有是对象本身的一个成员才会返回true。不会检查原型链中是否有给定的方法或属性。

  IE 5.5+、FireFox、Chrome、Safari、Opera等主流浏览器均支持该函数。

      function ClassA(){
  this.fname="张";
  this.lname="三";
  this.rank = ;
  this.sayHello = function(){
  alert("Hello:"+fname+lname);
  };
  }   var myPro = {
  name:"张三",
  age:
  };
  ClassA.prototype = myPro;
  var a = new ClassA();
  alert(a.hasOwnProperty("fname"));//true
  alert(a.hasOwnProperty("lname"));//true
   alert(a.hasOwnProperty("sayHello"));//true
   alert(a.hasOwnProperty("name"));//false

  4.isPrototypeOf()方法

  判断某对象是否是指定实例的原型。是返回true,否则返回false。

  注意:该方法不会检查原型链中的对象。即:只检查本实例的直接原型,不会检查本实例的原型的原型。

      function ClassA(){}
  function ClassB(){}
  function ClassC(){}
  /**
  * ClassB的原型设为ClassA,ClassC的原型设为ClassB
   * 注意:这与原型继承不同
   */
  ClassB.prototype = ClassA;
   ClassC.prototype = ClassB;
   var b = new ClassB();
   var c = new ClassC();
   alert(ClassA.isPrototypeOf(b));//true
   alert(ClassB.isPrototypeOf(c));//true
   alert(ClassA.isPrototypeOf(c));//false

  prototype和_proto_相连的两部分,用isPrototypeOf(),结果返回true.请结合原型链图体会下列代码的结果。

     alert(Object.isPrototypeOf(Function));//false
alert(Object.prototype.isPrototypeOf(Function.prototype));//true function ClassD(){};
alert(Object.prototype.isPrototypeOf(ClassD.prototype));//true
alert(Function.prototype.isPrototypeOf(ClassD));//true var d = new ClassD();
alert(Object.prototype.isPrototypeOf(d.prototype));//false
alert(Object.isPrototypeOf(d));//false var obb = new Object();
alert(Object.prototype.isPrototypeOf(Object));//true
alert(Object.prototype.isPrototypeOf(obb));//true

  引用:JavaScript instanceof 运算符深入剖析

  

typeof、instanceof、hasOwnProperty()、isPrototypeOf()的更多相关文章

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

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

  2. java基础9 main函数、this、static、super、final、instanceof 关键字

    一.main函数详解 1.public:公共的.权限是最大的,在任何情况都可以访问  原因:为了保证jvm在任何情况下都可以访问到main法2.static:静态,静态可以让jvm调用更方便,不需要用 ...

  3. 面向对象的程序设计(二)理解各种方法和属性typeof、instanceof、constructor、prototype、__proto__、isPrototypeOf、hasOwnProperty

    //理解各种方法和属性typeof.instanceof.constructor.prototype.__proto__.isPrototypeOf.hasOwnProperty. //1.typeo ...

  4. typeof、instanceof与isPrototypeOf()的差异与联系

    一.typeof 1.typeof的意义及作用: 我们知道ECMAScript中有5种简单(基本)数据类型:Undefined.Null.Boolean.Number.String,以及一种引用数据类 ...

  5. constructor、prototype、isPrototypeOf、instanceof、in 、hasOwnProperty

    constructor.prototype.isPrototypeOf.instanceof.in .hasOwnProperty等等 constructor:对象构造器.存在于原型对象中?,相当于p ...

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

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

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

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

  8. javascript 中isPrototypeOf 、hasOwnProperty、constructor、prototype等用法

    hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员. isPrototypeOf是用来判断要检查 ...

  9. indexOf、instanceOf、typeOf、valueOf详解

    1.indexOf() 该方法用来返回某个指定的字符串值在字符串中首次出现的位置. 语法:indexOf(searchvalue,fromindex);两个参数,参数一表示查询的字符串值,参数二可选表 ...

随机推荐

  1. OpenCV:OpenCV目标检测Hog+SWindow源代码分析

    参考文章:OpenCV中的HOG+SVM物体分类 此文主要描述出HOG分类的调用堆栈. 使用OpenCV作图像检测, 使用HOG检测过程,其中一部分源代码如下: 1.HOG 检测底层栈的检测计算代码: ...

  2. 微信小程序swiper bindChange重复执行

    swiper是微信小程序的一个滑动组件,非常重要.如果只是做简单的轮播图而不进行复杂的逻辑,直接可以使用,甚至不需要知道组件的方法.今天在做一个如下的页面时,快速滑动swiper出现了问题: 控制台打 ...

  3. mount 命令总结

    配置CnetOS 7.4 本地yum源,记录下遇到的ISO镜像挂载问题,使用 blkid 命令可以查看设备的UUID.Label.文件系统类型(iso镜像文件系统类型iso9660) [root@lo ...

  4. BZOJ 4712: 洪水 挖坑待补

    Code: #include<bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) # ...

  5. 【转载】JSTL 标签大全详解

    版权声明:本文为博主原创文章,转载请注明出处,冷血之心的博客. https://blog.csdn.net/qq_25827845/article/details/53311722 (尊重劳动成果,转 ...

  6. vim/vi编辑器挂到后台ctrl + z

    vim/vi编辑器通过CTRL+z将文件挂在到后台后,如果要再次进入,需通过jobs查看文件的序号,然后通过fg 序号进入文件进行编辑 (BaiduPictureToWord) [master@ins ...

  7. phpMyAdmin使用教程

    ---恢复内容开始--- wamp中自带了管理MySQL的phpMyAdmin,可用来本机测试,服务器维护,虚拟主机用户管理MySQL. 登录需记住servername,username,passwo ...

  8. Centos7.5虚拟机无法ping通网关、外网IP地址

    问题:前两天Centos7.5虚拟机关机,第二天重启后使用Xshell发现无法连接虚拟机,经检测发现虚拟机无法ping通192.168.1.1.无法ping通192.168.1.118(客户机)和ww ...

  9. 获取元素属性中的[x] 标签: javascript 2016-12-24 22:35 105人阅读 评论(0)

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  10. CSS学习笔记之基本介绍

    1.简介 层叠样式表(Cascading Style Sheets,CSS)允许我们把样式设置存储在文件中,从而将内容与表现分离 当同一个 HTML 元素被不只一个样式定义时,最终的样式确定顺序如下( ...