javascript权威指南学习笔记-对象(七)
2015-12-04 11:46
676 查看
2010年后就没怎么看技术类的书了,真的快被淘汰了
ECMAScript5 定义了一个创建对象的新方法,Object.create();
采用Object.create()来实现原型继承
属性的特性,我学习js的时候属性都是可写、可枚举、可配置的,到ECMAScript5属性的特性却不一样了。
数据属性:value、writable、enumerable、configurabel
存取器属性:get、set 、enumerable、configurable
可以通过Object.getOwnPropertyDescriptor();来获取属性描述
先来了解下存取器的get、set方法:
看到这代码,可能会觉得多此一举
接着我们输出存取器的属性描述
如果想设置属性的特性,可以通过Object.defineProperty();
ECMAScript5 定义了一个创建对象的新方法,Object.create();
var user=Object.create({name:"zhangsan",age:123}); //该方法与下面的目的一样 var user={}; user.name="zhangsan"; user.age=123; var user={name:"zhangsan",age:123} var user=new Object(); user.name="zhangsan"; user.age=123;
采用Object.create()来实现原型继承
function inherit(p){ if(p==null){ throw TypeError(); } //判断是否支持ECMAScript5的语法 如果支持直接调用 if(Object.create){ return Object.create(p); }else{ //如果不支持则采用原型继承的方式来实现 var t=typeof p; if(t!="Object"&&t!=="function()){ throw TypeError(); } function F(){ } F.prototype=p; return new F(); } }
属性的特性,我学习js的时候属性都是可写、可枚举、可配置的,到ECMAScript5属性的特性却不一样了。
数据属性:value、writable、enumerable、configurabel
存取器属性:get、set 、enumerable、configurable
可以通过Object.getOwnPropertyDescriptor();来获取属性描述
var user={name:123} console.log(Object.getOwnPropertyDescriptor(user,"name")); //输出Object {value: 123, writable: true, enumerable: true, configurable: true}
先来了解下存取器的get、set方法:
var userFun={ _name:"zhangsan", set name(value){ this._name=value; }, get name(){ return this._name; } } userFun.name="李四"; console.log(userFun.name); //输出为李四
看到这代码,可能会觉得多此一举
var userFun={ _name:"zhangsan", set name(value){ this._name=value; }, get name(){ return this._name+"123"; } } userFun.name="李四"; console.log(userFun.name); //这里输出的就是 李四123咯,对值进行了修饰,在一些程序这个功能就非常有意义了
接着我们输出存取器的属性描述
var userFun={ _name:"zhangsan", set name(value){ this._name=value; }, get name(){ return this._name+"123"; } } console.log(Object.getOwnPropertyDescriptor(userFun,"name")); //输出Object {get: function, set: function, enumerable: true, configurable: true}
如果想设置属性的特性,可以通过Object.defineProperty();
var user={ } Object.defineProperty(user,"name",{writable:false}); user.name="zhangsan"; console.log(user.name); //这里输出竟然是undefined
相关文章推荐
- js闭包
- JSP标准标签库(JSTL)--函数标签库 fn
- JavaScript基础
- JSP标准标签库(JSTL)--XML标签库 x
- sqoop2 用POST给sqoop server发json参数请求创建连接得不到响应
- NSArray 和 NSDictionary 转 jsonString
- fastJson
- 写给小白的JavaScript引擎指南
- JS 本地存储-web Storage+js读写cookie
- javascript 中not defined 和undefined处理方法,附带实例
- JSP标准标签库(JSTL)--国际化标签库 fmt
- 关于jsp页面是放在webroot目录下和web-inf下优缺点
- Day 19: EmberJS 入门指南
- Myeclipse开发JSP 代码和配置文件位置
- javascript里面的数组,json对象,动态添加,修改,删除示例
- js图片大小限制,设置
- Day 8: Harp.JS——现代静态web服务器
- Day 7: GruntJS 在线重载 提升生产率至新境界
- js省市二级下拉联动
- Day 5: GruntJS——重复乏味的工作总会有人做(反正我不做)