首先我们来讲一下Object.create()
方法。它是JavaScript中一个非常重要的方法,用于创建一个新对象,同时可以将其原型指向另一个对象,也可以添加新的属性和方法。下面就来详细介绍一下Object.create()
的用法:
基本语法
Object.create()
方法的基本语法如下:
Object.create(proto[, propertiesObject])
其中,proto
表示新对象的原型对象,propertiesObject
表示可选属性对象(用来添加新的属性和方法)。
下面分别解释一下这两个参数:
proto参数
proto
参数是新对象的原型对象,它可以是任意对象或者null。当proto
参数为null时,创建的新对象没有原型,那么原型链就到达了顶端。
propertiesObject参数
propertiesObject
参数是一个可选对象,用来添加新的属性和方法。它包含了一些属性描述符,这些属性会被添加到新对象中。具体来说,propertiesObject
参数有以下几个属性:
configurable
:是否可以删除该属性,默认值为false。enumerable
:是否可以枚举该属性,默认值为false。value
:属性的值。writable
:属性是否可以被修改,默认值为false。get
:获取该属性值的函数。set
:设置该属性值的函数。
注:value、get和set,这三个属性不可同时出现。
用途
Object.create()
方法的主要用途是实现继承,通过指定一个原型对象创建一个新对象,实现原型式继承。同时,你可以通过propertiesObject
参数添加新的属性或方法,实现类似于构造函数中的原型对象的作用。
下面分别介绍两个使用示例。
示例一
下面是一个使用Object.create()
实现继承的示例。我们定义了Person
构造函数,以及Person
的两个实例person1
和person2
,然后使用Object.create()
从Person
的实例中创建了一个新的Student
对象,并将新对象的proto
属性指向了Person
的原型对象。最后,给Student
对象添加了一个新的introduce
方法。
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.say = function() {
console.log("My name is " + this.name + ", I'm " + this.age + " years old.");
};
var person1 = new Person("Tom", 20);
var person2 = new Person("Jerry", 25);
var Student = Object.create(person1);
Student.introduce = function() {
console.log("I'm " + this.name + ", I'm a student.");
};
Student.introduce();
输出结果为:
I'm Tom, I'm a student.
在这个示例中,我们创建了一个新的对象Student
,同时使它继承了Person
对象的一些属性和方法,新对象Student
的原型对象指向了Person
的实例对象person1
。然后我们给Student
添加了一个新的introduce
方法,在调用Student.introduce()
的时候输出了相应的内容。
示例二
下面是一个使用Object.create()
添加属性和方法的示例。我们定义了一个空对象obj
,并将它的原型对象指向了Object.prototype
,然后在propertiesObject
参数中添加了两个属性:name
和introduce
。其中name
的值为"Tom",introduce
的值为一个匿名函数,输出属性name
的值。
var obj = Object.create(Object.prototype, {
name: {
value: "Tom",
writable: true,
enumerable: true,
configurable: true
},
introduce: {
value: function() { console.log(this.name); },
writable: true,
enumerable: true,
configurable: true
}
});
obj.introduce();
输出结果为:
Tom
在这个示例中,我们创建了一个空对象obj
,并指定了proto
参数为Object.prototype
。然后在propertiesObject
参数中添加了两个属性:name
和introduce
。其中name
的值为"Tom",introduce
的值为一个匿名函数,它输出属性name
的值。最后我们调用了obj.introduce()
方法,输出了属性name
的值。
好了,以上就是关于JavaScript中关于Object.create()
的用法的完整攻略,希望对你有帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript中关于Object.create()的用法 - Python技术站