<script>
//Object
//***********************************************************************************
//hasOwnProperty*********************************************************************
//Object的hasOwnProperty()方法返回一个布尔值,判断对象是否包含特定的自身(非继承)属性。
// (1)判断自身属性是否存在 (2)判断自身属性与继承属性 (3)遍历一个对象的所有自身属性
function Foo() {
this.prop1 = "**";
}
Foo.prototype.prop2 = "**";
let foo = new Foo();
console.log(foo.hasOwnProperty("prop1")); // true
console.log(foo.hasOwnProperty("prop2")); // false 这是继承属性,不是自身属性
//instanceof*****************************************************************
console.log(foo instanceof Foo); // true
console.log(foo instanceof Object); // true 对象都属于Object
//************************************************************************************************
//Object.assign() 把一个或者多个源对象的可枚举属性复制给目标对象**************************************
// 在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的。可枚举性决定了这个属性能否被for…in查找遍历到。
let obj1 = { a: 1 };
let obj2 = { b: 2 };
let obj3 = {};
Object.assign(obj3, obj1);
console.log(obj3); //只显示{a: 1} 但是点击它展开之后 还会有 b: 2
obj3.b = 2;
console.log(obj1); //{a: 1}
Object.assign(obj3, obj1, obj2);
console.log(obj3); //{a: 1, b: 2}
//**************************************************************************************
//Object.defineProperty() 用来配置对象的属性**********************************************
//Object.defineProperty()的作用就是直接在一个对象上定义一个新属性,或者修改一个已经存在的属性
//configurable 控制是否可以删除,writable 控制是否可以修改(赋值),而enumerable 控制是否可以枚举.
let obj = {};
Object.defineProperty(obj, "a", {
value: "1",
enumerable: true,
writable: false,
configurable: false,
});
obj.a = 2; // 不起作用
delete obj.a; // 不起作用
console.log(obj);
</script>
Object的几个常见方法( Object.hasOwnProperty()、instanceof、Object.assign()、Object.defineProperty() )
最新推荐文章于 2024-10-09 23:19:34 发布