JavaScript中使用Object.create()创建对象介绍


Posted in Javascript onDecember 30, 2014

对于对象的创建,除了使用字面量和new操作符,在ECMAScript 5标准中,还可以使用Object.create()来进行。Object.create()函数接受2个对象作为参数:第一个对象是必需的,表示所创建对象的prototype;第二个对象是可选的,用于定义所创建对象的各个属性(比如,writable、enumerable)。

var o = Object.create({x:1, y:7});

console.log(o);//Object {x=1, y=7}

console.log(o.__proto__);//Object {x=1, y=7}

将null作为第一个参数调用Object.create()将生成一个没有prototype的对象,该对象将不会具有任何基本的Object属性(比如,由于没有toString()方法,对这个对象使用+操作符会抛出异常):

var o2 = Object.create(null);

console.log("It is " + o2);//Type Error, can't convert o2 to primitive type

对于仅支持ECMAScript 3标准的浏览器,可以用Douglas Crockford的方法来进行Object.create()操作:

if (typeof Object.create !== 'function') {

    Object.create = function (o) {

        function F() {}

        F.prototype = o;

        return new F();

    };

}

newObject = Object.create(oldObject);
Javascript 相关文章推荐
javascript 检测浏览器类型和版本的代码
Sep 15 Javascript
JavaScript replace(rgExp,fn)正则替换的用法
Mar 04 Javascript
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
Apr 13 Javascript
javascript new fun的执行过程
Aug 05 Javascript
JavaScript事件处理器中的event参数使用介绍
May 24 Javascript
删除节点的jquery代码
Jan 13 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
Mar 07 Javascript
用js将long型数据转换成date型或datetime型的实例
Jul 03 Javascript
vue中接口域名配置为全局变量的实现方法
Sep 20 Javascript
使用jquery Ajax实现上传附件功能
Oct 23 jQuery
详解从vue-loader源码分析CSS Scoped的实现
Sep 23 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
Feb 27 Javascript
JavaScript中对象property的读取和写入方法介绍
Dec 30 #Javascript
jQuery中:last选择器用法实例
Dec 30 #Javascript
JavaScript中对象property的删除方法介绍
Dec 30 #Javascript
JavaScript中检查对象property的存在性方法介绍
Dec 30 #Javascript
JavaScript中遍历对象的property的3种方法介绍
Dec 30 #Javascript
JavaScript语言对Unicode字符集的支持详解
Dec 30 #Javascript
JavaScript中的对象的extensible属性介绍
Dec 30 #Javascript
You might like
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
深入理解PHP中的Session和Cookie
2013/06/21 PHP
WordPress开发中用于标题显示的相关函数使用解析
2016/01/07 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
thinkphp5框架API token身份验证功能示例
2019/05/21 PHP
Ext面向对象开发实践(续)
2008/11/18 Javascript
火狐4、谷歌12不支持Jquery Validator的解决方法分享
2011/06/20 Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
2012/03/01 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
javascript动态的改变IFrame的高度实现自动伸展
2013/10/12 Javascript
浅析js中的浮点型运算问题
2014/01/06 Javascript
jQuery自定义添加"$"与解决"$"冲突的方法
2015/01/19 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
JavaScript从数组的indexOf()深入之Object的Property机制
2016/05/11 Javascript
jquery实现超简单的瀑布流布局【推荐】
2017/03/08 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
jQuery HTML设置内容和属性操作实例分析
2020/05/20 jQuery
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
2020/10/21 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
[01:34]DOTA2 7.22版本新增神杖效果一览(敏捷英雄篇)
2019/05/28 DOTA
scrapy爬虫完整实例
2018/01/25 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
英国排名第一的停车场运营商:NCP
2019/08/26 全球购物
解释一下ArrayList Vector和LinkedList的实现和区别
2013/04/26 面试题
股份合作协议书范本
2014/04/14 职场文书
农村文化建设标语
2014/10/07 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
小学体育跳绳课教学反思
2016/02/16 职场文书
SQL实现LeetCode(180.连续的数字)
2021/08/04 MySQL