标准库 - Object

一、Object 对象,同时也是一个构造函数。

     Object 对象提供了很多操作对象的属性和方法,也是对应的原型。

1.Objcet() 作为函数使用 可以把其他数据类型转为一个包装对象

<script>  
    var a = Object("a");
    // 传入字符串就可以包装为字符串对象,传入number 可以包装为number对象
    console.log(a);  //--> String
 </script>

2.Object( ) 作为构造函数 。如果传入对象,则直接把对象返回

<script>
    var b = Object ({name:"1"});
        console.log(b); 
</script>

3.直接调用Object方法,可以创建一个空对象

 <script>
 var c = new Object();
  c.name = "a";
  console.log(c);  //---> {name: 'a'}
 var c1 = {name : "c"};
  console.log(c1); // ---> {name: 'c'}
 </script>

 4.可以给Object 对象的 原型添加自定义方法或属性 ,所有原型是Object的对象都有该方法

 <script>   
        //给object对象原型添加一个count方法
        Object.prototype.count = function(){
            console.log("自定义方法");
        }
        var d1 ={name:"b"};
        //调取count方法 
        d1.count();  // ---> 自定义方法
    </script>

5.instanceof 运算符返回一个bool值,表示对象是否为某个构造函数的实例

所有的对象都是Object 构造函数的实例

 <script>     
  function Peo (){
            this .name = "peo";
        }
        var pe1 = new Peo();
        console.log (pe1);
        var pe2 = {};
        console.log(pe1 instanceof Peo); //true 
        console.log(pe2 instanceof Peo); // false
        console.log(pe2 instanceof Object); // true
        console.log(pe1 instanceof Object); // true
    </script>

6. Object.getPrototypeof(obj)

        返回参数对象的原型,也是获取对象原型的标准方法

直接赋值不能通过get读取对象的原型

   <script>
        function Peo(){
            this.name = "name";
        }
        var pe1 = new Peo( );
        console.log(Object.getPrototypeOf(pe1)); // ---> {constructor: ƒ}
    </script>

7.Object.setPrototypeof(a,b)

        设置a对象的原型对象为b。  getPrototypeOf可以读取到该原型对象

<script> 
        //利用set 修改pe3的原型对象  
     Object.setPrototypeOf(pe3,{value : "test"});
        //用get可以读取
     console.log(Object.getPrototypeOf(pe3));//---> {value: 'test'}
    </script>

8.Object.create(a,b) 

        以对象a为原型,创建一个新的对象b。b对象需要的属性需要用对象属性描述方式

<script>         
//创建一个对象 有name属性和age属性
     var cat = {name :"cat",age :"12"};
 //以对象cat 为原型,创建一个新的对象cat1  新对象的属性tnmae 值需要用对象属性描述方法 
     var cat1 =Object.create(cat,{tname:{value:"ca1"}});
     console.log(cat1); //---> {tname: 'ca1'}
</script> 

9.prototye.isPrototypeOf(obj)

         判断一个对象是否为参数对象的原型

<script>         
//创建一个对象 有name属性和age属性
     var cat = {name :"cat",age :"12"};
 //以对象cat 为原型,创建一个新的对象cat1  新对象的属性tnmae 值需要用对象属性描述方法 
     var cat1 =Object.create(cat,{tname:{value:"ca1"}});
     console.log(cat1); //---> {tname: 'ca1'}
//判断cat1的原型是否为cat的原型
     console.log(cat.isPrototypeOf(cat1)); // ---> true
</script> 

10. __ proto__ 

       返回对象的原型

<script>   
    var cat = {name :"cat",age :"12"};
        //以对象cat 为原型,创建一个新的对象cat1  新对象的属性tnmae 值需要用对象属性描述方法 
        var cat1 =Object.create(cat,{tname:{value:"ca1"}});
        //输出对象cat1的原型
        console.log(cat1.__proto__); // ---> object
</script> 

11.hasOwnProperty(prop)

用于查看属性是否为对象自身的属性。true则是自身属性,false是原型属性

:原型上的属性不属于自身属性

    var cat = {name :"cat",age :"12"};
        //以对象cat 为原型,创建一个新的对象cat1  新对象的属性tnmae 值需要用对象属性描述方法 
        var cat1 =Object.create(cat,{tname:{value:"ca1"}});
        console.log (cat1.hasOwnProperty("tname"));  // --> true
        console.log (cat1.hasOwnProperty("name")); // --> false
    </script> 

12 Object.keys(obj)

遍历对象的所有key值 。(只能遍历对象自有的属性 不能遍历对象原型上的属性)

  <script>         
    //12.用Object.key(obj)遍历
        //创建一个dog类 有name、age属性 
      function dog () {
            this.name = "nana";
            this.age = 9;
        }
        var dog1 = new dog();
        //给dog1 添加一个 go的属性
        Object.setPrototypeOf(dog1,{move:"wangwang"});
        //遍历dog对象里面的属性(key)  ---> 只能遍历对象自有的属性 不能遍历对象原型上的属性
        console.log(Object.keys(dog1));
        //遍历dog对象里面的属性值  .forEach(function(item,index){ }) //数组遍历元素的方法
       Object.keys(dog1).forEach(function(key){ 
        console.log(dog1[key]); // --->输出属性值  
       }); 
    </script> 

13.Object.values(obj)

遍历对象的所有value值 。(只能遍历对象自有的属性 不能遍历对象原型上的属性)

    <script>         
    //13.用Object.value(obj)遍历
        //创建一个dog类 有name、age属性 
      function dog () {
            this.name = "nana";
            this.age = 9;
        }
        var dog1 = new dog();
        //给dog1 添加一个 go的属性
        Object.setPrototypeOf(dog1,{move:"wangwang"});
       //遍历value值 
       console.log(Object.values(dog1)); //----> ['nana', 9] 
    </script> 

----->  

获取对象的 keys 数组:Object.keys(obj)

获取对象的 values 数组:Object.values(obj) 

<script>
    function dog(name,age){
        this.name = name ;
        this.age = age ;
    }
    var dog1 = new dog ("nana",9);
    console.log (dog1);
    console.log(Object.keys(dog1));
    console.log(Object.values(dog1));
</script>
Key 和 Value 输出的区别

 14.Object.toString( )
        返回对象的类型字符串(对象的类型字符串就是object),第一个是对象字符串类型object,第二个参数是该值的构造函数

    <script>
    var dog1 = {name:"dog1"}
      console.log(dog1+"") //[object Object]
      console.log(dog1.toString())  // [object Object]
      // 用该方法可以更精准的判断数据类型
     /*   Object的toString内部的this指向的是Object对象,
      用call方法改变this的执行,可以把this执行为需要判断的数据,
      toString返回的第二个参数则是产生该值的构造函数(js的字符串,数字等在js运行时都会包装为对应的对应) */
      console.log(Object.prototype.toString.call(2)) // [object Number] 为number类型
      console.log(Object.prototype.toString.call({})) // [object Object] 为对象类型
      console.log(Object.prototype.toString.call('')) // [object String] 字符串类型
      console.log(Object.prototype.toString.call(true) === "[object Boolean]") // [object Boolean]
      console.log(Object.prototype.toString.call([])) // [object Array]
      </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值