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();

  • 相关阅读:
    [LeetCode] Bulb Switcher II 灯泡开关之二
    [LeetCode] Second Minimum Node In a Binary Tree 二叉树中第二小的结点
    [LeetCode] 670. Maximum Swap 最大置换
    [LeetCode] Trim a Binary Search Tree 修剪一棵二叉搜索树
    [LeetCode] Beautiful Arrangement II 优美排列之二
    [LeetCode] Path Sum IV 二叉树的路径和之四
    [LeetCode] Non-decreasing Array 非递减数列
    [LeetCode] 663. Equal Tree Partition 划分等价树
    [LeetCode] 662. Maximum Width of Binary Tree 二叉树的最大宽度
    [LeetCode] Image Smoother 图片平滑器
  • 原文地址:https://www.cnblogs.com/zhaow/p/9754449.html
Copyright © 2011-2022 走看看