javascript 高级程序设计 九
JS 面向对象的程序设计思想(1)深入理解JS对象
1、js的中没有OO语言中的'类'的概念。ECMAjs中把对象定义为:‘无序属性的集合,其属性可以包含基本值,对象或函数’。
2、ECMAScript中为对象定义了一组只有内部可以使用的属性,这些属性的目的是为了描述外部定义的属性的各种特征。这些特征是为了实现JS引擎用的,
因此再JS中不能不能直接访问它们。为了表示这个特性是内部值,把他们放到了两对中括号中,例如[[Enumerable]]。
数据属性:
[[Configurable]]:可配置性,默认为true,描述这个数据属性是否可以被delete,从而重新定义属性、描述了能否修改属性的特性,能否把属性改为访问器属性
[[Enumerable]]:可遍例(for-in)性,默认为true。
[[Writable]]:可修改性。默认为true
[[Value]]::在此保存数据。默认为undefined.
var person = {};
Object.defineProperty(person, "name", {//要修改属性的默认特性。必须使用Object.definedProperty()
writable: false;
value: 'Nicholas'
});
alert(person.writable);//Nicholas
person.name = 'wang';
alert(person.writable);//Nicholas
访问器属性:(不包含数据值,包含一对getter,setter函数)
[[Configurable]]:可配置性,默认为true,描述这个属性是否可以被delete,从而重新定义属性、描述了能否修改属性的特性,能否把属性改为访问器属性
[[Enumerable]]:可遍例(for-in)性,默认为true。
[[Get]]:在读取属性时调用的函数。默认值为undefined
[[Set]]:在写入属性时调用的函数。默认值为undefined
var person={
_age = 10,
addAge = 1
};
Object.defineProperty(person, 'age',{
get: function(){
return this._age;
},
set: function(newValue){
if(newValue > 10){
_age = newValue;
addAge = newValue - 10;
}
}
});
person.age = 12;
alert(person.addAge);//2
除了一次性修改一个属性的特性方法:Object.defineProperty();还有另一个更加强大的方法:Object.defineProperties();可以一次性修改多个属性的特性。
var book = {};
Object.defineProperties(book, {
_year: {
value: 2004
},edition: {
value: 1
},year:{
get: function(){
return this._year;
},set: function(newValue){
if(newValue > 2004){
this._year = newValue;
this.edtion += newValue - 2004;
}
}
}
});
book.year = 2005;
alert(book.edition);//2
最新文章
- 注解的方式搭建springmvc步骤
- iOS-APP发布应注意要点
- 二叉树的基本操作(C)
- java类的访问控制符与其他几个特殊修饰符的总结
- UVa1606 UVaLive3259 FZU1309 HDU1661 POJ2280 ZOJ2390 Amphiphilic Carbon Molecules
- c - static 变量
- (转)命令行下,用 xcodebuild 生成ipa文件,通过 itms-services 协议安装
- JavaWeb学习篇之----HTTP协议详解
- Bluetooth Obex
- Matlab 编译EXE
- spring AOP的概念和使用
- Python——Socket编程
- 网站模仿——LOFTER个人主页
- W10笔记本电脑弄成WIFI
- RabbitMQ简单应用の消息持久化
- Java基础巩固——《Java核心技术基础·卷一:基础知识》
- Aspose.Cells API 中文版文档 下载
- Oracle初始化参数之memory_target
- 无插件,无com组件,利用EXCEL、WORD模板做数据导出(一)
- 黑客编程教程(二)Win API编程简介
热门文章
- gdufe1534-小小怪一定认真听课-dfs
- javascript中scrollTop和offsetTop的区别
- AJAX简单实例
- asp.net mvc areas
- 根据23423条件,截取字段‘abdecsdsadsadsad’,以ab/dec/sdsa/ds/ads 输出
- awk——getline
- 二分图 最小点覆盖 poj 3041
- Zabbix 3.0编译安装
- 98. Validate Binary Search Tree (Tree; DFS)
- Codeforces Beta Round #52 (Div. 2)