//本例是为了记录检测对象类型的两种方式,即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. ios TCP抓包

    1.工具安装 Mac15.1 ,Xcode11.2.1 这一步有个小坑,我第一次执行rvictls -s 提示 rvictl: command not found.Stack Overflow上提供了 ...

  2. Add hyperlink to textblock wpf

    Add hyperlink to textblock wpf Displaying is rather simple, the navigation is another question. XAML ...

  3. Google Python Style Guide

    https://google.github.io/styleguide/pyguide.html

  4. protected-broadcast 规范使用系统应用组件自定义广播

    1. protected-broadcast 规范使用系统应用组件自定义广播 参考:https://blog.csdn.net/TaylorPotter/article/details/7019424 ...

  5. python笔记6 模块与包 程序开发规范 包 re sys time os模块

    模块与包 python 模块首引用加载到内存,如果再次引用此模块,直接从内存中读取. python文件分为:执行文件(解释器运行的文件),被引用文件(import) 模块引用一共发生了3件事: 1.他 ...

  6. OpenStack Cinder发展动态系列--Austin峰会

    在Mitaka版本,Cinder团队在多个特性和领域取得了重大进展. 本文将做一个简要的介绍:关于在Mitaka版本已经完成的功能和特性,以及讨论在Newton版本将会开发的功能和特性. 1 Cind ...

  7. JAVA 基础编程练习题27 【程序 27 求素数】

    27 [程序 27 求素数] 题目:求 100 之内的素数 package cskaoyan; public class cskaoyan27 { @org.junit.Test public voi ...

  8. [C++/JavaScript]数据结构:栈和数列>案例引入(数制的转换)

    1 案例1:数制的转换 1.1 背景与原理 1.2 编程复现 (JavaScript版 复现) function convert(value, d){ stack = []; // 栈 result ...

  9. 比特币 难度值(difficulty)

    难度(Difficulty) 难度是对挖矿困难程度的度量,即指:计算符合给定目标的一个HASH值的困难程度.比特币网络有一个全局的区块难度,有效的区域必须有一个HASH值,该HASH值必须小于给定的目 ...

  10. 微信小程序---查看更多的显示与隐藏

    平时工作中经常遇到开始只显示几行文字,点击按钮,可以查看全部文字内容. 简单写了个,代码如下: <view class="item_content f28 gray"> ...