zoukankan      html  css  js  c++  java
  • 检测对象类型的两种方式,constructor属性和instanceof

    //本例是为了记录检测对象类型的两种方式,即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();

  • 相关阅读:
    array_map()与array_shift()搭配使用 PK array_column()函数
    Educational Codeforces Round 8 D. Magic Numbers
    hdu 1171 Big Event in HDU
    hdu 2844 poj 1742 Coins
    hdu 3591 The trouble of Xiaoqian
    hdu 2079 选课时间
    hdu 2191 珍惜现在,感恩生活 多重背包入门题
    hdu 5429 Geometric Progression 高精度浮点数(java版本)
    【BZOJ】1002: [FJOI2007]轮状病毒 递推+高精度
    hdu::1002 A + B Problem II
  • 原文地址:https://www.cnblogs.com/zhaow/p/9754449.html
Copyright © 2011-2022 走看看