读书笔记--JavaScript设计模式:Constructor模式(创建对象的方法)
来源:互联网 发布:photoshop最新软件版本 编辑:程序博客网 时间:2024/06/04 01:25
个人主页:http://laichuanfeng.com/
Object.defineProperty创建对象的用法(可继承的对象)
基本用法:
Object.defineProperty(newObject,"someKey",{value:"for more control of the property's behavior,writeable:true,enumerable:true,configurable:true})
这样用起来麻烦,包装成函数:
var defineProp=function(obj,key,value){var config={};config.value=value;Object.defineProperty(obj,key,config);}
var person=Object.create(null);//创建一个新的对象defineProp(person,"car","Delorean");defineProp(person,"dateOfBirth","1992");defineProp(person,"hasBeard",false);//用这种方式申明的属性也可以被继承person.firstname="Mark"; // 继承person的属性var driver=Object.create(person);defineProp(driver,"topSpeed","100mph");console.log(driver.dateOfBirth);console.log(driver.topSpeed);console.log(driver.firname);
输出:
现在,我们做点别的,看看将person打印输出:
<span style="font-size:18px;">console.log(person);</span>输出:
我们只得到了通过“.”运算符设置的属性与属性值。回看Object.defineProperty方法,除了一个value可以设置,我们还可以设置writeable(可写),enumerable(可枚举),configurable(可配置),问题就出来enumerable上,如果未设置,默认是false,即不可枚举,不能通过console.log()方法显示出来,也不能通过for...in...方法遍历,所以我们的函数修改为:
var defineProp=function(obj,key,value){var config={};config.value=value;/*默认为false,不可遍历*/config.enumerable=true;Object.defineProperty(obj,key,config);}
输出:
同样,对于writeable属性,如果我们未设置,对象的属性值初始化之后是不能修改的,
比如我们修改car属性
person.car="BMW"输出:
与上面的一致,未被修改,修复的方法同理:
var defineProp=function(obj,key,value){var config={};config.value=value;config.writable=true;/*默认为false,不可遍历*/config.enumerable=true;config.configurable=true;Object.defineProperty(obj,key,config);}
0 0
- 读书笔记--JavaScript设计模式:Constructor模式(创建对象的方法)
- javascript设计模式之new创建对象的安全模式
- JavaScript模式读书笔记 第5章 对象创建模式
- javascript设计模式读书笔记
- JavaScript 创建对象的模式
- JavaScript中创建对象的方法:工厂模式,构造函数模式, 原型模式
- 设计模式【2】:工厂方法【创建对象】
- JavaScript对象创建模式
- JavaScript创建对象模式
- javascript对象创建模式
- JavaScript设计模式之构造器(Constructor)模式
- 【学习】Javascript设计模式——Constructor构造器模式
- javascript设计模式-Constructor(构造器)模式
- 【javascript设计模式】1.Constructor(构造器)模式
- 设计模式(对象创建)——工厂方法模式
- 设计模式-创建型模式(读书笔记)
- javascript设计模式读书笔记(1)--单体模式
- Javascript中创建对象的各种模式
- SQL server 触发器
- Python 深入理解yield
- iOS 网络请求库(一)—— NSURLSession
- backbone学习进阶—
- pyhon之Tkinter实例化学习
- 读书笔记--JavaScript设计模式:Constructor模式(创建对象的方法)
- ubuntu14.04加入win7引导
- 关于小兵日历无法删除的解决办法
- java-web 第四讲 servlet 学习心得
- mergeSort
- 关于使用XMLHTTP的艰苦经历
- Interleaving String
- android:background="@color/white" [create file color.xml at res/values/]
- 前端性能优化最佳实践