Object.create() 是什么?
Object.create(proto [, propertiesObject ]) 是E5中提出的一种新的对象创建方式,第一个参数是要继承的原型,如果不是一个子函数,可以传一个null,第二个参数是对象的属性描述符,这个参数是可选的。
例如:
function Car (desc) { this.desc = desc; this.color = "red"; } Car.prototype = { getInfo: function() { return 'A ' + this.color + ' ' + this.desc + '.'; } }; //instantiate object using the constructor function var car = Object.create(Car.prototype); car.color = "blue"; alert(car.getInfo());
结果为:A blue undefined.
1、propertiesObject 参数的详细解释:(默认都为false)
数据属性:
访问属性:
2、例子:直接看例子就知道怎么用。
<!DOCTYPE html> <html> <head> <title>yupeng's document </title> <meta charset="utf-8"/> </head> <body> <script type="text/javascript"> var obj = { a:function(){ console.log(100) }, b:function(){ console.log(200) }, c:function(){ console.log(300) } } var newObj = {}; newObj = Object.create(obj,{ t1:{ value:'yupeng', writable:true }, bar: { configurable: false, get: function() { return bar; }, set: function(value) { bar=value } } }) console.log(newObj.a()); console.log(newObj.t1); newObj.t1='yupeng1' console.log(newObj.t1); newObj.bar=201; console.log(newObj.bar) function Parent() { } var parent = new Parent(); var child = Object.create(parent, { dataDescriptor: { value: "This property uses this string as its value.", writable: true, enumerable: true }, accessorDescriptor: { get: function () { return "I am returning: " + accessorDescriptor; }, set: function (val) { accessorDescriptor = val; }, configurable: true } }); child.accessorDescriptor = 'YUPENG'; console.log(child.accessorDescriptor); var Car2 = function(){ this.name = 'aaaaaa' } //this is an empty object, like {} Car2.prototype = { getInfo: function() { return 'A ' + this.color + ' ' + this.desc + '.'; } }; var newCar = new Car2(); var car2 = Object.create(newCar, { //value properties color: { writable: true, configurable:true, value: 'red' }, //concrete desc value rawDesc: { writable: true, configurable:true, value: 'Porsche boxter' }, // data properties (assigned using getters and setters) desc: { configurable:true, get: function () { return this.rawDesc.toUpperCase(); }, set: function (value) { this.rawDesc = value.toLowerCase(); } } }); car2.color = 'blue'; console.log(car2.getInfo()); car2.desc = "XXXXXXXX"; console.log(car2.getInfo()); console.log(car2.name); </script> </body> </html>
结果为:
100
yupeng
yupeng1
201
I am returning: YUPENG
A blue PORSCHE BOXTER.
A blue XXXXXXXX.
aaaaaa
以上就是针对javascript一种新的对象创建方式Object.create()的详细介绍,希望对大家的学习有所帮助。
本文向大家介绍javascript创建对象的3种方法,包括了javascript创建对象的3种方法的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了js创建对象的多种方法,分享个方法的优劣,具体内容如下 第一种创建对象的方式: 创建JSON对象 推荐使用的场合: 作为函数的参数,临时只用一次的场景。比如设置函数原型对象。 第二种创建对象的方式: 创建一个Object对象 以上两种创建对象方
本文向大家介绍创建一般js对象的几种方式,包括了创建一般js对象的几种方式的使用技巧和注意事项,需要的朋友参考一下 1.对象字面量创建对象 var obj = { a:1,b:2 }; 注意:对象字面量是一个表达式,这种表达式每次运算都会创建并初始化一个新对象,并计算这个新对象的每个属性值。所以如果在循环体内使用对象字面量,每次循环时都会创建新对象。 2.通过new运算符创建对象 注意:new运算
本文向大家介绍js中创建对象的几种方式,包括了js中创建对象的几种方式的使用技巧和注意事项,需要的朋友参考一下 前言 不管是哪门语言,千变万化不离其宗,深入理解其本质,方能应用自如。对应到js,闭包,原型,函数,对象等是需要花费大功夫思考、理解的。本文穿插了js原型和函数的相关知识,讨论了批量创建对象的几种方式以及它们的优缺点。 正文 说起创建对象,最容易想到的便是通过对象字面量方式直接定义一个对
本文向大家介绍浅谈JavaScript对象的创建方式,包括了浅谈JavaScript对象的创建方式的使用技巧和注意事项,需要的朋友参考一下 通过Object构造函数或对象字面量创建对象时,使用同一个接口创建很多对象时,会产生大量的重复代码。为了简化,引入了工厂模式。 工厂模式 这种创建对象的方式大大简化了代码,然而也存在不足,那就是无法确定对象的类型。为了解决这个问题,出现下面这种模式。 构造函数
本文向大家介绍详细分析Javascript中创建对象的四种方式,包括了详细分析Javascript中创建对象的四种方式的使用技巧和注意事项,需要的朋友参考一下 前言 使用Javascript创建对象的方式有很多,现在就来列举一下其中的四种方式,并且罗列出了每种方式的优缺点,可以让大家进行选择使用,下面来看看。 工厂模式 优点:工厂模式可以解决创建多个相似对象 缺点:没有解决对象识别问题(怎样确定一
本文向大家介绍JS对象创建的几种方式整理,包括了JS对象创建的几种方式整理的使用技巧和注意事项,需要的朋友参考一下 最近一直在看JS高级程序设计这本书,有空来梳理一下几种创建对象的方式。话不多说,直接步入正题。 第一种:Object构造函数创建 这行代码创建了Object引用类型的一个新实例,然后把实例保存在变量Person中。 第二种:使用对象字面量表示法 对象字面量是对象定义的一种简写形式,目