`

Javascript 属性的特性

 
阅读更多
Javascript 属性有四个特性:
  • configurable 是否可以删除和修改该属性
  • enumerable 是否可以通过for/in循环返回该属性
  • value  属性的值
  • writable 是否可以修改该属性的值


//声明类和类的构造函数
function Person(name,age){ 
	this.name=name; //类的属性
	this.age=age;
	this.sayHello=function(){ //类的方法
		document.writeln("Hello I'm " + this.name);
	}
	this.setName=function(name){
		this.name=name;
	}
	this.setAge=function(age){
		this.age=age;
	}
}
var person = new Person('xiao', 21);

var name_pro =Object.getOwnPropertyDescriptor(person,'name');
document.writeln(name_pro.configurable); //是否可以删除和修改该属性
document.writeln(name_pro.enumerable); //是否可以通过for/in循环返回该属性
document.writeln(name_pro.value); 
document.writeln(name_pro.writable); //是否可以设置该属性的值
name_pro.writable=false;
name_pro.configurable=false;
name_pro.enumerable=false;
person.name='him';
document.writeln(person.name); //=>him, 很奇怪name属性仍然被修改
document.writeln('='+Object.keys(person)+'='); //=>name,age,sayHello,setName,setAge 很奇怪设置无效
//定义新的属性
Object.defineProperty(person, 'weight', {value:100, 
	writable:true, enumerable:true, cofigurable:false});
document.writeln(person.weight);	
//修改已有属性
Object.defineProperty(person, 'weitht', {writable:false, enumerable:false});
person.weight=120;
document.writeln(person.weight); //=>120
document.writeln('='+Object.keys(person)+'='); //name,age,sayHello,setName,setAge,weight 很奇怪设置无效
//批量新建属性
Object.defineProperties(person, {
	sex:{value:'male', writable:true, enumerable:false, configurable:false},
	language:{value:'Chinese', writable:true, enumerable:false, configurable:false},	
});


属性描述符的使用规则,违反规则的操作将抛出异常:
  • 1. 如果对象是不可扩展的,则可以编辑已有的属性,但不能添加新属性。
  • 2. 如果属性是不可配置的,则不能修改他的可配置性和可枚举性
  • 3. 如果存取器属性是不可配置的,则不能修改其getter和setter方法,也不能将它转换为数据属性。
  • 4. 如果数据属性是不可配置的,则不能将它转换为存取器属性。
  • 5. 如果数据属性是不可配置的,则不能将他的可写性从false改为true,但可以从true改为false。
  • 6. 如果数据属性是不可配置且不可写的,则不能修改他的值。然而可配置但不可写属性的值是可以修改的(实际上是先将它标记为可写的,然后修改它的值,最后转换为不可以写的)。
分享到:
评论

相关推荐

    JavaScript — 对象和属性的特性1

    总结来说,JavaScript中的对象和属性特性涉及原型链、内部特性、属性描述符和访问器等多个方面,理解并熟练运用这些概念是成为一名优秀的JavaScript开发者的关键。通过掌握这些知识,我们可以更好地控制对象的行为,...

    html,javascript元素属性文档

    这个标准定义了JavaScript的语言特性和语法。其中,函数、变量、数据类型、循环、条件判断等都是开发者必须掌握的基础概念。另外,JavaScript还有一套强大的对象模型,如DOM(文档对象模型),它允许我们以编程方式...

    Javascript和Css属性对照

    DOM 属性则是通过 JavaScript 访问 HTML 或 XML 文档元素的特性,如 `document.getElementById('myDiv').style.color` 可以获取或设置 ID 为 'myDiv' 的元素的颜色。 CSS 属性则用于描述 HTML 或 SVG 元素的外观和...

    javascript属性详解

    JavaScript是Web开发中不可或缺的一部分,它为网页提供了动态交互的能力。在JavaScript中,对象和其属性构成了编程的核心...无论你是初学者还是经验丰富的开发者,深入掌握JavaScript属性都将有助于提升你的编程技能。

    JavaScript数组特性与实践应用深入详解

    JavaScript数组是该语言中一种用于存储有序集合的数据结构,它的操作和特性非常丰富,为开发者处理数据集合提供了极大的便利。本文将深入探讨JavaScript数组的特性以及在实际编程中的应用。 首先,数组字面量是定义...

    JavaScript的面向对象特性浅析与范例.pdf

    "JavaScript面向对象特性浅析与范例" JavaScript是一种基于原型的解释型语言,它允许在任意时刻给一个对象添加任意多的属性和方法。 JavaScript的面向对象特性是指它可以实现面向对象编程的部分特性,而不是完全...

    JavaScript语言精粹完整版

    自ES6开始,JavaScript引入了许多新特性,如let和const声明、箭头函数、模板字符串、类和模块等,这些特性极大地丰富了JavaScript的语法,使其更加现代化和高效。 ### 实战案例分析 《JavaScript语言精粹》还提供了...

    JavaScript语言特性

    JavaScript的这些特性使得它成为开发Web应用的理想选择,尤其是随着Ajax的兴起,JavaScript在创建交互式和富用户体验的网页上发挥了关键作用。此外,JavaScript还能在服务器端运行,如Node.js环境,进一步扩大了其...

    JavaScript对象的特性与实践应用深入详解

    JavaScript对象的无类型特性意味着其属性值可以是任意类型,这给数据的集合和管理带来了极大的灵活性。对象的可变性允许我们在程序运行时动态地添加、删除或修改对象的属性。 对象字面量是创建对象的简明方式,它是...

    JavaScript函数的特性与应用实践深入详解

    JavaScript是一种面向对象的脚本语言,它的函数特性丰富且灵活,是实现逻辑和业务流程的基石。本文将详细探讨JavaScript函数的特性与应用实践。 首先,JavaScript函数是一种对象,这使得它们拥有对象的所有属性和...

    JavaScript语言的特性和应用.pdf

    JavaScript 语言的特性和应用 JavaScript 是一种基于对象的脚本语言,通过嵌入或整合在标准 HTML 语言中实现的。JavaScript 具有以下特性: 1. 基于对象的脚本语言:JavaScript 是一种基于对象的脚本语言,面向...

    head first JavaScript源码

    JavaScript的面向对象特性基于原型,对象可以包含属性和方法,并且可以互相继承。原型链是JavaScript实现继承的关键机制,它允许一个对象访问另一个对象的属性和方法。 事件处理和DOM操作也是JavaScript在网页交互...

    JavaScript继承的特性与实践应用深入详解

    当试图访问对象的一个属性时,JavaScript会沿着原型链向上查找,直到找到该属性或者到达原型链的顶部(即`null`),这就是原型链的工作原理。 在JavaScript中,构造函数是一种特殊类型的函数,用于创建具有特定属性...

    JavaScript中关联原型链属性特性

    在JavaScript中,对象的原型链是其重要特性之一,它是实现继承和共享...对原型链和属性特性的理解是深入学习JavaScript中继承、原型和对象操作的基础。掌握这些知识,对于编写符合JavaScript特性的高效代码至关重要。

    JavaScript文档

    这个文档可能会详细介绍新增的语法特性,如严格模式(use strict)、对象字面量的属性简写、数组和对象的扩展操作符等,还有对JSON(JavaScript Object Notation)的支持,以及函数参数的默认值、解构赋值等高级用法...

    JavaScript\JavaScript教程

    JavaScript的核心特性包括: 1. **弱类型**:JavaScript是一种动态类型的编程语言,变量的数据类型可以在运行时改变,无需预先声明。 2. **函数式**:JavaScript支持函数作为一等公民,可以将函数作为参数传递,也...

    javascript面向对象特性代码实例

    在本篇文章中,作者详细阐述了JavaScript面向对象编程的几个关键特性,并通过代码示例展示了这些特性的具体应用。首先,我们来了解几个核心概念:类、静态成员、对象和重载。 类在面向对象编程中扮演着基础的角色,...

    Javascript writable特性介绍

    在JavaScript中,writable特性是指属性可被赋值的能力,是JavaScript对象属性描述符中的一个关键属性。属性描述符是ES5引入的一个概念,允许我们详细描述一个对象属性的特性,包括值(value)、可写性(writable)、可...

Global site tag (gtag.js) - Google Analytics