对象的方法

Posted 94-lucky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象的方法相关的知识,希望对你有一定的参考价值。

1.freeze 冻结
特点:冻结属性,不能冻结引用地址,想要全部冻结,使用const

var  obj={a:1,b:2};
Object.freeze(obj);
obj.a=3;  
obj.c=3;
console.log(obj);   //{a:2,b:2}
obj={a:3,b:4};
console.log(obj)//{a:3,b:4}
var OBJ={a:1,b:2};
obj.a=3; 
OBJ={a:3,b:4};
console.log(OBJ)  //报错
class Methods{
    static random(){
        console.log("aaa");
     }
}
 Object.freeze(Methods);
 Methods.random=function(){
    console.log("bbb");
  }
Methods.random();   //  aaa   对象中的静态方法也能冻结

2.is 判断是否相等 相当于强等===

console.log(Object.is(0.1+0.2,0.1+0.2));   //true
console.log(0.1+0.2===0.3);            //false  
console.log([1,2,3]===[1,2,3]);   //false
console.log(Object.is([1,2,3],[1,2,3]));   //false  

3.create 以谁为原型创建 defineProperty 原型链 所有继承的方法都可以使用原型链下的属性

var obj={a:1,b:2};
var obj1=Object.create(obj);  //以obj为原型创建obj1
Object.defineProperty(obj1,"c",{
    value:3
  })
console.log(obj1)  //3
  1. a in b 可以判断是否是对象的对象属性或者对象的原型链属性
console.log("c" in obj1);  //true

5.hasOwnProperty 判断是否是对象的对象属性

console.log(obj1.hasOwnProperty("c"));  //true

6.isPrototypeOf 判断某个对象是否是另外一个对象的原型链

console.log(obj.isPrototypeOf(obj1))  //true

7.instanceof 判断该对象的原型链上是否有这个类型

var arr=[1,2,3];
console.log(arr instanceof Array);   //true            
console.log(arr instanceof Object);   //true   数组也是对象类型

8.typeof 判断类别

class Box extends Array{
  constructor(){
     super();
   }
}
let b=new Box();
console.log(typeof b);   //object  

9.constructor 判断该对象的抽象类

console.log(b.constructor===Box);   //true

10.propertyIsEnumerable 判断对象下某个属性是否可以枚举

console.log(  obj.propertyIsEnumerable("b"));

以上是关于对象的方法的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——JS中的面向对象编程

在一些片段之间填充对象变量的最佳方法

VSCode自定义代码片段9——JS中的面向对象编程

为什么我不能在此片段中生成唯一对象数组?

如何从片段中的 JSON 响应中的对象获取数据

片段“F1”不能在这里传播,因为“节点”类型的对象永远不能是“商店”类型