原生js的Object对象

一 、 熟悉js的同学都应该知道Object对象、在js中一切皆对象、一切的对象都继承自Object。

         Object()本身就是一个函数。它既可以当做工具函数来使用,也可以当做构造函数。
  1. 工具函数
    在作为工具函数的时候它可以将任意值转化为对象。分为2种情况基本数据类型和复杂数据类型。
    在基本数据类型中我们可以看出:字符串、数字、布尔值、都转化成了对应的包装类型、而null和undefined都是空对象。
      var a=Object()
     var x=Object(1) 
     var y=Object("52")
     var z=Object(true)
     var m=Object(null)
     var l=Object(undefined)
     console.log(a);//{}
     console.log((x)); //Number{1}
     console.log(x instanceof Object);//object
     console.log(Object(y)); //String{"2"}
     console.log(Object(z)); //Boolean{true}
     console.log(Object(m));//{}
     console.log(Object(l));//{}
复杂数据类型:
       对于数组、对象、以及函数、Object工具函数会返回其本身。不做处理。
  var b = { a: 1 };
      var a = Object(b);
      var x = Object([555, 666]);
      var y = Object(() => {});
      console.log(b === a); //true
      console.log(a); //{a:1 }
      console.log(x); //[555,666]
      console.log(x instanceof Object); //true
      console.log(Object(y)); //()=>{}

利用Object的特性可以判断声明的变量是不是一个对象。

      //判断变量是否为对象
      var x = true;
      var y = 1;
      var m = { a: "1" };
      var z = [1, 2, 3];
      function isObject(value) {
        return value === Object(value);
      }
     console.log( isObject(x)); //false
     console.log(  isObject(y)); //false
     console.log( isObject(m)); //true
     console.log(isObject(z));  //true
  1. 构造函数
    Object当做构造函数我们都知道构造函数前面应该加上关键字new 、在作为构造函数它是生成了一个对象。
    作为构造函数它的使用方法和工具函数差不多,如果为基本数据类型就返回它的包装类型, 复杂 数据类型就返回它本身。其次作为工具函数来说:它的作用是将改值转化为对象,而作为构造 函数来说它是返回了一个新的对象。
 var m={a:"4"}
        var n=4
        var z=new Object(4)
        var x=new Object(m)
        console.log(z);//Number{4}
        console.log(x===m); //true
  1. Object 的实例方法:所谓实例方法指的就是在原型对象的方法,后代实例可以访问到的方法。

    在这里插入图片描述我们可以看到在原型上的一些方法:
    Object 原型对象的方法主要有6个:valueOf、toString、toLocalString、propertyIsEnumerable、
    isPrototypeOf、hasOwnProperty.
    1.valueOf:主要作用为返回返回一个对象本身。或者返回它的原始值。

       var x={a:1}
      console.log(x.valueOf()); //{a:1}
      这里发生了隐式转换,可以看我写的js数据类型转化中的坑那篇文章。
      console.log(1+x);//"1[object,object]"
  2.toString:返回一个对象的字符串形式、一般返回类型字符串。   
      var x={a:1}
      console.log(x.toString()); //[object,object] //返回对象的类型字符串
      console.log(1+x);//"1[object,object]"

利用toString这个特性我们可以检查变量值的数据类型:

         var a=1
        var b="3"
        var c=true
        var d=null
        var l=undefined
        var x={a:1}
        var z=[1,2,3]
        var m=()=>{}
     console.log(Object.prototype.toString.call(x)); //[object,Object]
     console.log(Object.prototype.toString.call(b)); //[object,String]
     console.log(Object.prototype.toString.call(c)); //[object,Boolean]
     console.log(Object.prototype.toString.call(d)); //[object,Null]
     console.log(Object.prototype.toString.call(l)); //[object,Undefined]
     console.log(Object.prototype.toString.call(m)); //[object,Function]
  1. toLocalString:也是返回一个值的字符串形式
  2. hasOwnProperty: 主要检查实例对象有没有某一个属性。
        var z={a:1}
        z.__proto__.b=5
        console.log(z.__proto__);
        console.log(z.hasOwnProperty('a'));//true
        console.log(z.hasOwnProperty('b'));//false //检测不了原型对象的属性

二、Object函数的静态方法:所谓静态方法指的就是自身的方法、实例是无法访问的。
Object.keys() Object.values() Object.entires()

  var z={a:1,b:4}
    z.__proto__.c=5
    console.log(Object.keys(z)); //["a","b"]
    console.log(Object.values(z));//[1,4]
    console.log(Object.entries(z));[["a",1],["b",4]]

这里主要介绍这三个方法,其他方法可以自行查看。

三、
js中一切皆对象、Object作为所有对象的祖先、它即可作为工具函数也可作为构造函数、
它在原型对象的方法被子类可以继承使用,它自身的静态方法只能通过调用自身来使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值