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

javascript 属性 Javascript 属性类型

2023-03-22 16:20 JavaScript教程

javascript 属性 Javascript 属性类型

javascript 属性

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

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

// 全局变量
var myGlobalVariable = "Hello World";
 
// 对象变量
var myObject = {
    myObjectVariable: "Hello World"
};

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

// 添加新的全局变量 
myGlobalVariable = "Goodbye World"; 
 
// 添加新的对象变量 
myObject.myNewObjectVariable = "Goodbye World"; 

Javascript 属性类型

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


有两种不同类型的属性:数据属性和访问器属性。

数据属性包含一个值,如book1的name属性。

访问器属性不包含值。

访问器属性只需要一个getter或setter。

有一种特殊的语法来使用对象字面量来定义访问器属性:

var book1 = { 
   _name : "Javascript", 

   get name() { 
        console.log("Reading name"); 
        return this._name; 
    }, 
   set name(value) { 
        console.log("Setting name to %s", value); 
        this._name = value; 
    } 
}; 

console.log(book1.name); 

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

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

在访问器属性名称之前使用特殊关键字 get set

Getters应该返回一个值。
设置器接收分配给属性的值作为参数。
我们不需要定义getter和setter,我们可以选择一个或两个。
如果只定义一个getter,那么该属性将变为只读,并且尝试写入该属性将在nonstrict模式下静默失败,并在严格模式下抛出一个错误。
如果仅定义setter,那么属性将变为只写,并且尝试读取该值将在严格和非严格模式下静默失败。


属性

Javascript可以直接与属性属性交互。
我们可以添加新属性以支持其他功能。
我们可以创建表现与内置JavaScript属性相同的属性。

公共属性

在数据和访问器之间共享两个属性属性属性。

一个是[[Enumerable]],它决定是否可以迭代。

另一个是[[Configurable]],它确定属性是否可以更改。

我们可以使用 delete 删除可配置属性并可以随时更改其属性。

默认情况下,我们在对象上声明的所有属性都是可枚举和可配置的。

我们可以使用 defineProperty 方法来更改 [[Enumerable]] [[Configurable]]

var book1 = { 
   name : "Javascript" 
}; 

Object.defineProperty(book1, "name", { 
   enumerable : false 
}); 

console.log("name" in book1);                      // true 
console.log(book1.propertyIsEnumerable("name"));   // false 

var properties = Object.keys(book1); 
console.log(properties.length);                      // 0 

Object.defineProperty(book1, "name", { 
    configurable : false 
}); 

// try to delete the Property 
delete book1.name; 
console.log("name" in book1);                      // true 
console.log(book1.name);                           // "Javascript" 

//Object.defineProperty(book1, "name", {           // error!!! 
//    configurable : true 
//}); 

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

当JavaScript以严格模式运行时,尝试删除不可配置的属性导致错误。

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



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