`

JS_理解对象

 
阅读更多

1、数据属性

  • [[Configurable]]:能否通过delete删除属性从而重新定义属性。默认为true.
  • [[Enumerable]]能否通过for-in循环删除属性。默认为true.
  • [[Writable]]能否修改属性。默认为true.
  • [[Value]]:包含属性的数据值。默认为undefined。
要修改属性的默认特性,必须要使用ECMAScrpit的Object.defineProperty()方法,这个方法接受3个参数,属性所在对象,属性名,描述符对象。
Object.defineProperty()对一个对象的一个方法只能调用一次,否则报cannot redfine property :xxx;
var person = {}
Object.defineProperty(person, "name", {
	writable : false,
	configurable : false,
	value:"zhangsan"
});
person.name = "lisi";
Object.defineProperty(person, "name", {
	writable : true
});
document.write("pserson.name: " + person.name);
 2、访问器属性
  • [[Configurable]]:能否通过delete删除属性从而重新定义属性。默认为true.
  • [[Enumerable]]能否通过for-in循环删除属性。默认为true.
  • [[Get]]在读取属性时调用的函数。默认为undefined.
  • [[Set]]:在写入属性时调用的函数。默认为undefined。
访问器属性不能直接定义,必须使用Object.defineProperty()来定义。
var book = {_year:2003,edition:5};
Object.defineProperty(book,"year",{
	get:function(){
		return this._year;
	},
	set:function(newValue){
		this._year = newValue;
		this.edition +=newValue-2003;
	}
});
book.year = 2014;
document.write("book.edition: " + book.edition);
 3、读取属性的特性使用Object.getOwnPropertyDescriptor方法。eg.
var book = {
	_year : 2003,
	edition : 5
};
Object.defineProperties(book, {
	_year : {
		writable : false,
		configurable : false
	},
	year : {
		get : function() {
			return this._year;
		},
		set : function(newValue) {
			this._year = newValue;
			this.edition += newValue - 2003;
		}
	}
});
book.year = 2014;
var descriptor = Object.getOwnPropertyDescriptor(book, "_year");
console.log("descriptor: ",descriptor);
document.write("book.edition: " + book.edition);
 

 

分享到:
评论

相关推荐

    JS_浏览器对象

    总的来说,这个名为“JS_浏览器对象”的压缩包应该涵盖了以上所有概念,并可能通过示例代码和解释帮助学习者更好地理解和应用JavaScript的浏览器对象。深入学习这部分内容将大大提高开发者构建交互式Web应用程序的...

    threejs_opengl_javascript_js_ThreeJS_3d_

    标题中的"threejs_opengl_javascript_js_ThreeJS_3d_"揭示了我们正在讨论的是一个与Three.js相关的项目,Three.js是一个基于WebGL的JavaScript库,用于在浏览器中创建和展示3D图形。WebGL是一种JavaScript API,它...

    js_menu.rar_MENU._javascript_js_menu-collapsed.js_menu_front.

    在这个场景中,我们关注的是一个名为"js_menu.rar_MENU._javascript_js_menu-collapsed.js_menu_front."的压缩包,它涉及到一个JavaScript实现的多级导航菜单。这个菜单可能是一个网页应用的核心组成部分,因为它...

    高性能JavaScript_编程_javascript_js_

    3. **对象和原型链**:深入理解原型和原型链,包括对象的创建方式、原型对象、__proto__属性、以及如何通过构造函数和Object.create()创建对象,这对于理解和利用JavaScript的面向对象特性十分关键。 4. **函数式...

    js.zip_javascript_javascript 图形_js_js graphics

    JavaScript,简称JS,是一种广泛应用于Web开发的轻量级编程语言,它被设计用来操作HTML文档对象模型(DOM)并实现动态网页效果。在“js.zip”这个压缩包中,我们看到了与JavaScript图形渲染相关的资源,包括“index....

    js_game.rar_game JavaScript _js小游戏

    JavaScript是一种广泛应用于网页和网络应用开发的编程语言,尤其在创建交互...通过分析和理解游戏的源代码,开发者可以学习到JavaScript的事件处理、动画制作、状态管理等多方面的知识,进一步提升自己的前端开发技能。

    理解Javascript_06_理解对象的创建过程

    在JavaScript中,对象的创建是一个复杂且...理解这个过程有助于我们更好地设计和实现面向对象的JavaScript代码。在后续的学习中,我们将进一步探讨执行上下文、函数对象的详细概念以及其他相关的JavaScript核心概念。

    JS_CPP.rar_JS调用C++_javascript VC_js调用C++函数_vc javascript_调用JS

    这个名为 "JS_CPP.rar" 的压缩包提供了一个实践案例,展示了如何在 JavaScript 和 VC (Visual C++) 之间实现互操作性。这些交互通常通过特定的接口或库来完成,以确保数据和控制流程能在两种语言之间无缝传递。 1. ...

    threejs-impact-checking_html+css_javascript_guidewdj_ThreeJS_

    Three.js是一个流行的JavaScript库,专门用于在Web浏览器中创建3D图形。它允许开发者利用WebGL技术,为网页带来丰富的三维视觉体验。 【描述】"基于three.js的html5自动检测小程序" 描述了该项目的核心功能,即一个...

    JavaScript 语言参考_javascript_js_

    "JavaScript 语言参考" 是一本全面涵盖JavaScript核心概念和技术的资源,旨在帮助开发者深入理解和熟练运用这门语言。 JavaScript API手册是学习和查阅JavaScript函数、对象和方法的重要资料,它包含了从基本语法到...

    js_game.rar_javascript_js 游戏_js游戏

    JavaScript,简称JS,是一种广泛应用于Web开发的轻量级编程语言,特别适合于创建交互式网页和游戏。本文将深入探讨如何使用JavaScript开发一款小型游戏,这对于初学者来说是一个很好的学习项目。 首先,理解...

    js_.rar_.doc_javascript_js

    文档"js代码杂谈总结.doc"显然包含了作者对JavaScript语言的理解和经验总结。 在JavaScript中,核心概念包括变量(variables)、数据类型(data types)、控制流(control flow)、函数(functions)、对象...

    js.rar_javascript_js_js 日期控件_日期控件

    在JavaScript中,内置的Date对象是处理日期和时间的基础。通过创建Date对象,我们可以获取当前时间,或者设置自定义的日期和时间。例如: ```javascript var today = new Date(); console.log(today); ``` 这段...

    js面向对象简单理解

    JavaScript是一种广泛应用于Web开发的动态编程语言,尤其以其强大的面向对象特性而闻名。面向对象编程(Object-Oriented ...通过阅读`prototype.js`这样的示例代码,可以帮助加深对JavaScript面向对象编程的理解。

    arcgis_js_v37_api

    "arcgis_js_api"可能包含API的核心库文件,这是构建ArcGIS JavaScript应用程序的基础。在实际项目中,需要将这个库文件引入到HTML页面中,以便使用API的功能。 总结,ArcGIS JavaScript API 3.7是一个强大且全面的...

    arcgis_js_v46_api和arcgis_js_v46_sdk

    在使用arcgis_js_v46_sdk.zip和arcgis_js_v46_api.zip这两个压缩包时,开发者需要先解压文件,然后在项目中引用API的JavaScript文件。通常,API的库文件会被加载到HTML页面的`<script>`标签中,以便在页面上运行GIS...

    PyPI 官网下载 | js.javascript_canvas_to_blob-2.0.5.tar.gz

    标题中的"PyPI 官网下载 | js.javascript_canvas_to_blob-2.0.5.tar.gz"表明这是一个从Python Package Index(PyPI)官方源获取的软件包,名为`js.javascript_canvas_to_blob`,版本号为2.0.5,并且是以tar.gz格式...

    js.zip_Csharp js_c# js_c++ js

    需要注意的问题包括性能优化(因为JavaScript解释和执行可能较慢)、安全考虑(执行不受信任的JavaScript代码可能存在风险)、错误处理(需要...以及API设计(如何优雅地让C#代码调用和理解JavaScript的方法和对象)...

    arcgis_js_v4.10_api&sdk;

    ArcGIS JavaScript API是Esri公司提供的用于构建地理信息系统(GIS)应用的JavaScript库,而SDK则提供了详细的开发指南和技术文档,帮助开发者更好地理解和使用API。在"arcgis_js_v4.10_api&sdk"这个压缩包中,包含...

    JavaScript设计模式与开发实践_himppf_js_jspremise_精通javascript_Js设计模式_

    "himppf"可能是作者或某个特定的代码风格指南,"jspremise"可能是指JavaScript的基础概念,"精通javascript"则强调了对这门语言的深入理解和熟练掌握,而"Js设计模式"则是我们讨论的重点。 JavaScript设计模式主要...

Global site tag (gtag.js) - Google Analytics