举报投诉联系我们 手机版 热门标签 名动网
您的位置:名动网 > javascript 属性 Javascript属性属性

javascript 属性 Javascript属性属性

2023-03-20 06:20 JavaScript教程

javascript 属性 Javascript属性属性

javascript 属性

JavaScript 属性是指 JavaScript 中的变量,它们可以用来存储和访问数据。JavaScript 属性可以是基本类型(如字符串、数字、布尔值),也可以是复杂类型(如对象、数组、函数)。

JavaScript 属性有两种形式:全局属性和对象属性。全局属性是在全局作用域中定义的变量,它们可以在所有 JavaScript 代码中使用。而对象属性则是在特定对象中定义的变量,它们只能在该对象的作用域内使用。

// 全局变量
var name = "John";
 
// 对象变量
var person = {
    name: "John"
};

JavaScript 具有动态特性,因此我们可以随时向 JavaScript 对象添加新的属性或方法。例如:

person.age = 25; // 添加一个新的 age 字段

此外,JavaScript 还允许我们使用特殊语法来创建“隐式”对象。例如:

document.write("Hello World!"); // document 是一个隐式对象

Javascript属性属性

Javascript面向对象设计 - Javascript属性属性


检索属性属性

要获取属性属性,请使用Object.getOwnPropertyDescriptor()。

此方法仅适用于自己的属性。

此方法接受两个参数:要处理的对象和要检索的属性名称。

如果属性存在,您应该接收一个描述符对象有四个属性:可配置,可枚举,并且两个其他适合于属性的类型。

例如,以下代码创建一个属性并检查其属性:


var book1 = { 
    name : "Javascript" 
}; // w  ww. j  a va2 s  . c  o m

var descriptor = Object.getOwnPropertyDescriptor(book1, "name"); 

console.log(descriptor.enumerable);     // true 
console.log(descriptor.configurable);   // true 
console.log(descriptor.writable);       // true 
console.log(descriptor.value);          // "Javascript" 

上面的代码生成以下结果。



防止对象修改

上面的代码生成以下结果。...

[[Extensible]]属性是一个布尔值,指示对象本身是否可以修改。

我们创建的所有对象默认都是可扩展的,这意味着可以在任何时候向对象添加新属性。

通过将[[Extensible]]设置为false,我们可以防止新的属性添加到对象。

有三种不同的方法来完成这个。

防止扩展

创建不可扩展对象的一种方法是使用Object.preventExtensions()方法。

创建不可扩展对象的一种方法是使用Object.preventExtensions()方法。...

在对象上使用这个方法后,我们永远不会再次向其中添加任何新属性。

我们可以使用Object.isExtensible()检查[[Extensible]]的值。

我们可以使用Object.isExtensible()检查[[Extensible]]的值。...


var book1 = { 
    name : "Javascript" 
}; 

console.log(Object.isExtensible(book1));      // true 

Object.preventExtensions(book1); 
console.log(Object.isExtensible(book1));      // false 

book1.writeLine = function() { 
     console.log(this.name); 
}; 

console.log("writeLine" in book1);              // false 

上面的代码生成以下结果。

尝试向不可扩展对象添加属性将在strict中抛出错误模式。

在非严格模式下,操作失败。



密封对象

创建不可扩展对象的第二种方式是密封对象。

密封对象不可扩展,其所有属性都是不可配置的。

我们不能向对象添加新属性,我们不能删除属性或更改其类型。

如果对象被密封,您只能读取和写入其属性。

我们可以在对象上使用Object.seal()方法来封装它。

调用Object.seal()方法后,[[Extensible]]属性设置为false,并且所有属性的[[Configurable]]属性设置为false。

我们可以使用Object.isSealed()来检查对象是否被密封,如下所示:


var book1 = { 
    name : "Javascript" 
}; // w w  w.  j  a v a 2  s. c o  m

console.log(Object.isExtensible(book1));      // true 
console.log(Object.isSealed(book1));          // false 

Object.seal(book1); 
console.log(Object.isExtensible(book1));      // false 
console.log(Object.isSealed(book1));          // true 

book1.writeLine = function() { 
    console.log(this.name); 
}; 

console.log("writeLine" in book1);              // false 

book1.name = "CSS"; 
console.log(book1.name);                      // "CSS" 

delete book1.name; 
console.log("name" in book1);                 // true 
console.log(book1.name);                      // "CSS" 

var descriptor = Object.getOwnPropertyDescriptor(book1, "name"); 
console.log(descriptor.configurable);           // false 

上面的代码生成以下结果。

上面的代码生成以下结果。...

冻结对象

创建不可扩展对象的最后一种方法是冻结它。

创建不可扩展对象的最后一种方法是冻结它。...

冻结对象是一个密封对象,其中数据属性也是只读的。

冷冻物品冻结后不能冻结。

我们可以通过使用Object.freeze()来冻结对象,并确定是否通过使用Object.isFrozen()冻结对象。

例如:


var book1 = { 
    name : "Javascript" 
}; 

console.log(Object.isExtensible(book1));      // true 
console.log(Object.isSealed(book1));          // false 
console.log(Object.isFrozen(book1));          // false 

Object.freeze(book1); 
console.log(Object.isExtensible(book1));      // false 
console.log(Object.isSealed(book1));          // true 
console.log(Object.isFrozen(book1));          // true 

book1.writeLine = function() { 
    console.log(this.name); 
}; 

console.log("writeLine" in book1);              // false 

book1.name = "CSS"; 
console.log(book1.name);                      // "Javascript" 

delete book1.name; 
console.log("name" in book1);                 // true 
console.log(book1.name);                      // "Javascript" 

var descriptor = Object.getOwnPropertyDescriptor(book1, "name"); 
console.log(descriptor.configurable);           // false 
console.log(descriptor.writable);               // false 

上面的代码生成以下结果。

阅读全文
以上是名动网为你收集整理的javascript 属性 Javascript属性属性全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 名动网 mdwl.vip 版权所有 联系我们