美文网首页
面向对象(十二)Object.property详解

面向对象(十二)Object.property详解

作者: 凸小布 | 来源:发表于2017-03-04 15:37 被阅读36次

    Object.property中的属性和方法

    • constructor 指向原型相关联的构造函数为Object
    • hasOwnProperty 判断对象中是否拥有某个实例属性(不包括原型链上面的属性)
    • isPrototypeOf 校验某个对象是否是指定对象的原型对象(整条原型链)
    • propertyIsEnumerable 属性是否存在且可枚举(使用for循环可以遍历,即目标属性能否在for循环中显示出来)
    • toString() 返回一个描述目标对象的字符串,对象则返回[object object]
      toString(参数) 参数出可以传入一个用于进制数的参数,该参数的默认值为10(主要针对Number类型有效)
    • toLocaleString 同toString,但是会做一些本地化的处理。
    • valueOf() 如果该对象有对应的基本数据类型的值,则返回对应的基本数据类型值,如果没有则返回this本身。
      Date对象调用该方法会返回一个时间戳

    constructor

    <script>
    
        function Person() {}
    
        var p = new Person();
        console.log(p.constructor);                     //function Person() {}
        console.log(Person.prototype.constructor);      //function Person() {}
        console.log(Object.prototype.constructor);      //function Object() { [native code] }
    
    </script>
    

    hasOwnProperty

    <script>
        function Person() {
            this.name = "默认的姓名"
        }
    
        //检查对象中是否拥有指定的属性(实例属性)
        var p1 = new Person();
        p1.hasOwnProperty("name");  //true
        p1.hasOwnProperty("age");   //false
        p1.hasOwnProperty("constructor");   //对象的constructor是从原型对象上继承的
    </script>
    

    isPrototypeOf

    <script>
    
        function Animal() {}
    
        function Cat() {}
    
        Cat.prototype =Animal.prototype;
        //检查某对象是否是指定对象的原型对象
        var cat = new Cat();
        console.log(Animal.prototype.isPrototypeOf(cat));   //true
    </script>
    

    propertyIsEnumerable

    <script>
        var obj = {
            name:"张三",
            age:20,
            hello:function () {
                console.log("hello");
            },
            showName:function () {
                console.log(this.name);
            }
        }
    
        //属性是否存在且可以枚举
        console.log(obj.propertyIsEnumerable("name"));      //true
    </script>
    

    toString

    <script>
    
        var obj = {};
        console.log(obj.toString());  //打印[object Object]
    
        var arr = [1,2,3,4,5];
        console.log(arr.toString());    //打印1,2,3,4,5
    
        var num = 10;
        console.log(num.toString());               //10
    
        var date = new Date();
        console.log(date.toString());           //Mon Feb 13 2017 19:00:13 GMT+0800 (CST)
    
        //toString方法可以传入参数,在处理Number类型数据的时候,可以传入指定的进制
        console.log(num.toString(2));       //1010  == 1*2*2*2+0*2*2+1*2+1*1 = 10
        console.log(num.toString(3));       //101   == 1*3*3 + 0*3 + 1*1 = 10
    </script>
    

    valueOf

    <script>
        var obj = {};
        console.log(obj + 1);       //[object Object]1
        //说明:如果该对象有对应的基本数据类型的值,则返回对应的基本数据类型值,如果没有则返回this本身。
    
        var  o = {name:"张三"};
        console.log(o + 1); //[object Object]1
    
        var date = new Date();
        console.log(date.valueOf());        //1486984088998
    
    </script>
    

    相关文章

      网友评论

          本文标题:面向对象(十二)Object.property详解

          本文链接:https://www.haomeiwen.com/subject/achjgttx.html