【JavaScript】Object 静态方法(二)
JavaScript object 静态方法
2023-09-27 14:23:50 时间
以下内容为学习记录,可以参考 MDN 原文。
环境
- node v12.18.1
- npm 6.14.5
- vscode 1.46
- Microsoft Edge 83
概念
定义在 Object 构造函数之上的方法,称为静态方法(static method)。
冻结
Object.freeze() 方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。freeze() 返回和传入的参数相同的对象。
Object.isFrozen() 方法判断一个对象是否被冻结。
const obj = {
prop: 42
};
Object.freeze(obj);
obj.prop = 33;
// Throws an error in strict mode
console.log(obj.prop);
// expected output: 42
扩展
Object.preventExtensions() 方法让一个对象变的不可扩展,也就是永远不能再添加新的属性。
Object.isExtensible() 方法判断一个对象是否是可扩展的(是否可以在它上面添加新的属性)。
const object1 = {};
Object.preventExtensions(object1);
try {
Object.defineProperty(object1, 'property1', {
value: 42
});
} catch (e) {
console.log(e);
// Expected output: TypeError: Cannot define property property1, object is not extensible
}
密封
Object.seal() 方法封闭一个对象,阻止添加新属性并将所有现有属性标记为不可配置。
当前属性的值只要原来是可写的就可以改变。
Object.isSealed() 方法判断一个对象是否被密封。
const object1 = {
property1: 42
};
Object.seal(object1);
object1.property1 = 33;
console.log(object1.property1);
// expected output: 33
delete object1.property1; // cannot delete when sealed
console.log(object1.property1);
// expected output: 33
is
Object.is() 方法判断两个值是否是相同的值。
Object.is('foo', 'foo'); // true
Object.is(window, window); // true
Object.is('foo', 'bar'); // false
Object.is([], []); // false
var foo = { a: 1 };
var bar = { a: 1 };
Object.is(foo, foo); // true
Object.is(foo, bar); // false
Object.is(null, null); // true
// 特例
Object.is(0, -0); // false
Object.is(0, +0); // true
Object.is(-0, -0); // true
Object.is(NaN, 0/0); // true
相关文章
- [转] JavaScript中in操作符(for..in)、Object.keys()和Object.getOwnPropertyNames()的区别
- ASP.NET postback with JavaScript (UseSubmitBehavior)
- 【JavaScript】JS中暂停几秒再往下执行!
- JavaScript技巧手冊
- 【JavaScript】JS_Object跟Function的区别
- 【JavaScript】JavaScript的Function与Object浅析
- JavaScript基础系列
- 《JavaScript入门经典(第6版)》——1.8 小结
- 《深入理解JavaScript》——1.3 变量和赋值
- 《JavaScript开发框架权威指南》——1.7 创建Bower包
- 《JavaScript忍者秘籍》——1.3 跨浏览器注意事项
- 《JavaScript启示录》——1.21 JavaScript对象和Object()对象
- Object_C 与JavaScript交互使用总结
- 《JavaScript高效图形编程(修订版)》——2.4 IE6背景图像缓存
- JS教程之如何在 JavaScript 中添加、更新和删除 JSON 数组 - CRUD
- javascript: Jquery each loop with json array or object
- JavaScript有这几种测试
- JavaScript初学者必看“this”
- Effective JavaScript Item 31 优先使用Object.getPrototypeOf,而不是__proto__
- Java程序猿的JavaScript学习笔记(5——prototype和Object内置方法)
- javascript复制数组的三种方式
- javascript的创建对象object.create()和属性检测hasOwnPrototype()和propertyIsEnumerable()