ECMAScript5之Object
在ECMAScript5中对Object新增的些方法,以前没注意的同志们,嘻嘻,下面我们再一起来边看边学。
1、Object之create |
Create单词意为创造嘛,作为Object的静态方法,不言而喻那当然是创建对象呗。
谁的对象呢?
当然不是我的。。。
好吧,Object.create(prototype,descriptors)是创建一个具有指定原型且可选择性地包含指定属性的对象并返回。
纳尼,什么意思?
我们一起demo下呗。
<!DOCTYPE html>
<head>
<title>create</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<script>
var newObj = Object.create(null,{
/*自带name,age属性*/
name: {
value: 'Monkey'
},
age: {
value: 24
}
});
console.log(newObj.name);
console.log(newObj.age);
//输出为null:原因是我们通过Object.create创建了一个null原型的对象
//http://www.cnblogs.com/giggle/p/5208199.html
console.log(Object.getPrototypeOf(newObj));
</script>
</body>
</html>
下面是Object.create具体讲解:
Object.create( prototype, descriptors ) |
|
prototype |
必须。要用作原型的对象。可为null |
descrioptors |
该对象的属性。 “数据属性”可获取且可设置值的属性。数据属性描述符包含value特性,以及writable、enumerable和configurable特性。若未指定最后三个特性,则它们的默认值是false。 |
返回值 |
一个具有指定的内部原型且包含指定的属性的新对象 |
注:用Object.create创建对象时,descriptors一定要是“数据属性”哦!!
什么意思。
我们再来写个demo,看看
<!DOCTYPE html>
<head>
<title>create</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<script>
var newObj = Object.create(null,{
//这里我没有按照着name:{}这种格式,而是普通格式
name: 'Monkey',
age: 24
});
//下面会报错滴
console.log(newObj.name);
console.log(newObj.age);
</script>
</body>
</html>
运行上面的代码,chrome下看看
大伙看见上面报的错了么。切记切记
2、Object之defineProperty |
在上面大家不是看见Object.create方法么,其实这是核心哦。下面的都是辅助它的呢。
比如这个defineProperty,其实就是将属性添加到对象,或修改对象的现有属性。
Object.defineProperty(object, propertyName, descriptor) |
|
object |
必须。在其上添加新属性或修改已有属性。 |
propertyName |
必须。属性名 |
descriptor |
又是它。描述属性的 |
返回值 |
已修改的对象 |
Demo一下:
<!DOCTYPE html>
<head>
<title>defineProperty</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<script>
var obj = Object.create(null);
//利用defineProperty为obj对象添加一个newDataProperty属性
Object.defineProperty(obj,"newDataProperty",{
value:'Monkey',
writable:true
});
console.log(obj.newDataProperty);
</script>
</body>
</html>
3、Object之defineProperties |
在上面我们看见了Object.defineProperty是添加或修改一个属性,这个嘛,从单词就知道咯,复数嘛,就是添加或修改一个或多个属性到对象咯。
Object.defineProperties(object,descriptors) |
|
object |
必须。对其添加或修改的属性对象 |
descriptors |
必须。包含一个或多个描述对象的JavaScript对象。 |
返回值 |
已修改的对象 |
<!DOCTYPE html>
<head>
<title>defineProperties</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<script>
var obj = Object.create(null);
//利用defineProperties为obj对象添加两个新属性
Object.defineProperties(obj,{
name:{
value:'Monkey'
},
age: {
value:24
}
});
console.log(obj.name);
console.log(obj.age);
</script>
</body>
</html>
4、Object之getOwnPropertyDescriptor |
这个静态方法就是,获取指定对象自身属性的描述符。而不是从对象的原型继承的哦。
Object.getOwnPropertyDescriptor(object,propertyname) |
|
object |
必须。访问属性的对象 |
propertyname |
必须。属性名 |
返回值 |
属性描述符 |
<!DOCTYPE html>
<head>
<title>getOwnPropertyDescriptor</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<script>
//通过Object.create创建一个对象
var obj = Object.create(null,{
name:{
value:'Monkey',
writable:true
}
});
//获得name的描述对象
var descriptor = Object.getOwnPropertyDescriptor(obj,'name');
console.log(descriptor);
</script>
</body>
</html>
从上面可以看出Object.getOwnPropertyDescriptor的确是返回的属性的描述信息对象哦。
5、Object之getOwnPropertyNames |
返回对象自己的属性名称。是对象自己的,而不是继承的哦。
Object.getOwnPropertyNames(object) |
|
object |
必须。返回属于该对象的所有属性名 |
返回值 |
包含对象自己属性的名称 |
<!DOCTYPE html>
<head>
<title>getOwnPropertyNames</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<script>
function Fn(name,age){
this.name = name;
this.age = age;
this.fn1 = function(){
console.log(this.name+" "+this.age);
};
}
Fn.prototype.fn2 = function(){
console.log(this.name);
};
Fn.prototype.attr1 = this.name;
obj = new Fn('Monkey',24);
/*
从上面的代码可知:obj自己的对象为name,age,fn1
继承的为fn2,attr1
*/
console.log(Object.getOwnPropertyNames(obj));
</script>
</body>
</html>
ECMAScript5之Object的更多相关文章
- ECMAScript5之Object学习笔记(一)
随着IE的逐步追赶,目前到IE11已经能够很好的支持ECMAScript5标准了,其他的现代浏览器像firefox,chrome,opera就更不用说了. 再加上nodejs使得javascript在 ...
- ECMAScript5之Object学习笔记(三)
第三部分继续... Object.getOwnPropertyDescriptor(obj, prop) 获取一个对象的属性描述符 根据"Own"这个词我们可以猜到,prop只能是 ...
- ECMAScript5之Object学习笔记(二)
继续第二部分 Object.freeze(obj) 看字面意思就是“把一个对象冻结”. 下面我们来看个简单的例子以作说明: // a person instance var person = { na ...
- ECMAScript5的其它新特性
之前两篇博客 ECMAScript5 Object的新属性方法,ECMAScript5 Array新增方法,分别介绍了ECMAScript5对Object和Array的拓展,这两个对象最常用,而且改动 ...
- js面向对象学习 - 对象概念及创建对象
原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...
- JS和JQuery的总结
JS部分 一, 词法结构 区分大小 注意://单行 /*多行注释*/ 字面量(直接量literal) 12 // 数字 5.8//小数 "hello" 'hello' true ...
- 读《编写可维护的JavaScript》第11章总结
这周也是拿到了同程的offer,从此走上了前端之路!感谢我的贵人们.再次纪念一下~! 第11章 不是你的对象不要动 11.1 什么是你的 你的对象:当你的代码创建了这些对象或者你有职责维护其他人的代码 ...
- 《JavaScript高级程序设计》学习笔记(5)——面向对象编程
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第六章内容. 1.面向对象(Object ...
- js的原型模式
以下内容来自<JavaScript高级程序设计>第三版 我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所 ...
随机推荐
- 创建Chrome启动器
今天清理垃圾时不知怎么把chrome启动器删除了,现在要重新创建一个 1.在桌面创建一个chrome.exe的快捷键方式,属性更改目标为: "C:\Program Files (x86)\G ...
- zepto区别于jquery获取select表单选中的值
在jquery下,我们获取select表单选中的值通常是通过$('select').val()来实现,这样的方式简单又明了,或者通过$('select option[selected]').text( ...
- centos7 时间设置
安装完成centos7后,虽然时区选择的是上海,但是最终的时间还是不对,因为没有开启自动同步NTP功能,所以需要自动手动设置. 首先输入timedatectl命令,查看当前机器的时间: Local t ...
- 在update语句中使用子查询
在update 中的 where 子句中使用子查询: UPDATE mg_page_log as a SET page_num=1 WHERE id in( SELECT id from mg_ ...
- (转)C# XMPP客户端与openfire通信(Matrix Xmpp 授权破解教程)
FROM:http://www.cnblogs.com/crabo/p/CRACK_MATRIX_XMPP.html 如此著名的XMPP , 居然试过jabber-net, agsXmpp,matri ...
- 使用canvas绘制一个时钟
周末学习canvas的一些基础功能,顺带写了一个基础的时钟.现在加工一下,做的更好看一点,先放上效果图: 谈一些自己的理解: (1).要绘制一个新的样式(不想被其他样式影响,或者影响到其他样式),那么 ...
- xcodebuild命令行打包发布ipa
配置好证书,然后在命令行转到项目目录 1.清除 EthantekiiMac:CTest ethan$ xcodebuild clean 2.编译 EthantekiiMac:CTest ethan$ ...
- HTML5- Canvas入门(二)
上篇文章我们了解了canvas的定义.获取和基础的绘图操作,其中的绘图功能我们讲解了线段绘制.上色.描边等方面知识点. 今天我们来讲讲矩形(Rectangle)和多边形的绘制. 矩形的绘制一共有两个口 ...
- 全新 Mac 安装指南(通用篇)(推荐设置、软件安装、推荐软件)
注:本文将会不定期维护与更新,有需要的朋友请在 Github 上订阅该条 Issues:<全新 Mac 安装指南(通用篇)>. 在 Mac 电脑上只用 Windows 操作系统的同学请看到 ...
- ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB
您创建的MovieDBContext类负责处理连接到数据库,并将Movie对象映射到数据库记录的任务中.你可能会问一个问题,如何指定它将连接到数据库? 实际上,确实没有指定要使用的数据库,Entity ...