//本例是为了记录检测对象类型的两种方式,即constructor属性和instanceof操作符。详见《高三》P145
        function Person(name, age, job) {
            this.name = name;
            this.age = age;
            this.job = job;
            this.say = function () {
                alert("hi,i'm " + name + "!");
            }
        }

var person1 = new Person("kitty", 18, "Student");
        var person2 = new Person("wede", 29, "SoftWare");

//利用constructor属性检测对象类型
        alert(person1.constructor == Person);  //true
        alert(person2.constructor == Person);  //true

//利用instanceof操作符检测对象类型
        alert(person1 instanceof Person);  //true
        alert(person2 instanceof Person);  //true

/********************************************************************************/

//利用instanceof操作符同样也能检测到继承自Object基类的所有类型,比如这样:
        alert(person1 instanceof Object); //true
        alert(person2 instanceof Object); //true
        //对比constructor属性,可以看出,constructor属性的值为对象的直接父级
        alert(person1.constructor == Object); //false
        alert(person2.constructor == Object); //false

//本例是上面示例的补充,意在说明函数的重构
        //详见《高三》P147
        function Person(name, age, job) {
            this.name = name;
            this.age = age;
            this.job = job;
            this.say = say; //注意,这里将外部函数say的作用域指向了函数内部
        }

function say() {
            alert("Hello,I'm "+this.name+","+this.age+" years old,i'm a "+this.job);
        }

var person1 = new Person("kitty", 18, "Student");
        var person2 = new Person("wede", 29, "SoftWare");

person1.say();
        person2.say();

检测对象类型的两种方式,constructor属性和instanceof的更多相关文章

  1. Java中对象拷贝的两种方式

    引用的拷贝 //引用拷贝 private static void copyReferenceObject(){ Person p = new Person(23, "zhang") ...

  2. JVM中对象访问定位两种方式

    1.通过句柄方式访问, 在Java堆中分出一块内存进行存储句柄池,这样的话,在栈中存储的是句柄的地址 优点: 当对象移动的时候(垃圾回收的时候移动很普遍),这样值需要改变句柄中的指针,但是栈中的指针不 ...

  3. 对象copy的两种方式--序列化--clone

    对象实现copy有多中方式,最土的方法就是直接new,然后塞值,不过这种方法是真的low,下面着重说说Object类中的clone() 和 序列化反序列化copy Object 中 clone的方法 ...

  4. jdbc插入修改clob类型的两种方式

    方法一: Connection con = dbl.loadConnection(); strSql = "insert into table1(id,a) values (1,EMPTY_ ...

  5. 在javaScript中把非数值类型的数据自动转换为数值类型的两种方式

    一.使用Number()函数. 二.使用parseInt()/parseFloat()函数. 详情: 一.使用Number()函数将非数值类型的数据自动的转化为数组类型 Number()函数可以将任何 ...

  6. java 的对象拷贝(有深浅拷贝两种方式,深拷贝实现的两种方式(逐层实现cloneable接口,序列化的方式来实现))

    Java提高篇--对象克隆(复制)(转自:http://www.cnblogs.com/Qian123/p/5710533.html#_label0)   阅读目录 为什么要克隆? 如何实现克隆 浅克 ...

  7. Java反射02 : Class对象获取的三种方式和通过反射实例化对象的两种方式

    1.Class对象获取的三种方式 本文转载自:https://blog.csdn.net/hanchao5272/article/details/79361463 上一章节已经说过,一般情况下,Jav ...

  8. jQuery 获取DOM节点的两种方式

    jQuery中包裹后的DOM对象实际上是一个数组,要获得纯粹的DOM对象可以有两种方式: 1.使用数组索引方式访问,例如: var dom = $(dom)[0]; 如: $("#id&qu ...

  9. java动态获取WebService的两种方式(复杂参数类型)

    java动态获取WebService的两种方式(复杂参数类型) 第一种: @Override public OrderSearchListRes searchOrderList(Order_Fligh ...

随机推荐

  1. ubuntu上面Parity 安装

      sudo wget https://raw.githubusercontent.com/paritytech/parity/master/scripts/parity.service -O /et ...

  2. 怎样获取java新IO的Path文件大小

    import org.junit.Test; import java.io.IOException; import java.nio.file.Files; import java.nio.file. ...

  3. Ubuntu 18.04 下 PostgreSQL 10 的安装与基础配置

    下载安装 在命令行执行如下语句: apt-get install postgresql-10 该指令会帮助你下载如下PostgreSQL组件: name |explain | ------------ ...

  4. IE浏览器URL中的查询条件中包含中文时报404的解决办法

    情况是比如我输入如下URL到IE浏览器: http://localhost:8090/RPT_TYSH_JL_ZD_DETAIL.html?pageIndex=1&year=2018& ...

  5. <marquee>滚动文字</marquee>

    <marquee>滚动文字</marquee> 水平滚动: <marquee direction=">水平滚动字幕内容</marquee> 垂 ...

  6. [Tensorflow] 使用 tf.keras.utils.get_file() 下载 MS-COCO 2014 数据集

    import argparse import tensorflow as tf tf.enable_eager_execution() def main(args): ""&quo ...

  7. 搭建IIS CA DC Exchange TMG SQL (CA DC篇)

    搭建IIS CA DC Exchange TMG SQL (CA DC篇)   步骤 1: 在“下一步(N) > (按下按钮)”(位于“添加角色向导”中)上用户左键单击   步骤 2: 在“Ac ...

  8. jvm的内存结构和gc的回收

    推荐这篇文章,说的还比较完整,留个记号,以后方便查看 https://blog.csdn.net/m0_38110132/article/details/74542143

  9. IOI 2005/bzoj 1812:riv 河流

    Description 几乎整个Byteland王国都被森林和河流所覆盖.小点的河汇聚到一起,形成了稍大点的河.就这样,所有的河水都汇聚并流进了一条大河,最后这条大河流进了大海.这条大河的入海口处有一 ...

  10. 洛谷 题解 P1353 【[USACO08JAN]跑步Running】

    动态规划 状态 dp[i][j]表示第i分钟疲劳值为j的最大值 初始 全部都为一个最小值"0" 转移 考虑休息和走 如果当前疲劳值比时间要大,显然不可能出现这种情况 如果比时间小 ...