//本例是为了记录检测对象类型的两种方式,即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. Mysql mysqldumpslow命令详解

    mysqldumpslow命令 /path/mysqldumpslow -s c -t 10 /database/mysql/slow-log 这会输出记录次数最多的10条SQL语句. 其中: -s, ...

  2. Vue生命周期钩子函数加载顺序的理解

    Vue实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.卸载等一系列过程,我们称这是Vue的生命周期.通俗说就是Vue实例从创建到销毁的过程,就是生命周期 ...

  3. Servlet的运行原理

  4. C++ STL 排序查找最大的5个

    #include <iostream>#include <algorithm>#include <deque>#include <vector>#inc ...

  5. Build Telemetry for Distributed Services之OpenTracing指导:C#

    官网链接:https://opentracing.io/guides/ 官方微博:https://medium.com/opentracing Welcome to the OpenTracing G ...

  6. MSE, MAE, Huber loss详解

    转载:https://mp.weixin.qq.com/s/Xbi5iOh3xoBIK5kVmqbKYA https://baijiahao.baidu.com/s?id=16119517755261 ...

  7. MySQL数据库相关资料

    python 全栈开发,Day60(MySQL的前戏,数据库概述,MySQL安装和基本管理,初识MySQL语句) python 全栈开发,Day61(库的操作,表的操作,数据类型,数据类型(2),完整 ...

  8. Jmeter安装及配置(傻瓜模式)

    接下来将以傻瓜模式进行安装,跟着流程走,没错的~ 1.首先进入到apache官网https://www.apache.org/dist/jmeter/binaries下载Windows版本JMeter ...

  9. 通过bat批处理程序如何实现在多个txt文件后面加上相同的一行文字

    通过bat批处理程序如何实现在多个txt文件后面加上相同的一行文字 set/p a=输入要增加的文字 for /f "delims=" %%i in ('dir /b *.txt' ...

  10. 【MOOC课程学习记录】程序设计与算法(一)C语言程序设计

    课程结课了,把做的习题都记录一下,告诉自己多少学了点东西,也能给自己一点鼓励. ps:题目都在cxsjsxmooc.openjudge.cn上能看到,参考答案在差不多结课的时候也会在mooc上放出来. ...