JavaScript中的对象和对象构造函数?
在面向对象编程的生活世界中,我们已经知道类和对象的重要性,但是与其他编程语言不同,JavaScript没有其他语言所具有的传统类。但是JavaScript具有对象和构造函数,它们在大多数情况下以相同的方式工作以执行相同的操作。
- 构造函数是与“new”关键字一起使用的常规JavaScript函数。构造函数在JavaScript中有两种类型,即内置构造函数(数组和对象)和自定义构造函数(定义特定对象的属性和方法)。
- 当我们需要一种创建可以多次使用而不必每次都重新定义对象的对象“type”的构造函数时,构造函数会很有用,这可以使用Object Constructor函数来实现。按照惯例,大写的构造函数名称会将其与常规函数区分开。
例如,考虑以下代码:
function Automobile(color) { this.color=color; } var vehicle1 = new Automobile ("red");
函数“Automobile()”是一个对象构造函数,其属性和方法即“color”在其内部声明为关键字“this”。然后使用关键字“new”将使用对象构造函数定义的对象转换为即时对象。
调用新的Automobile()时,JavaScript执行以下两项操作:
- 它创建一个新的新对象(实例)Automobile()并将其分配给变量。
- 它将对象的构造函数属性“color”设置为Automobile。
Object.create()方法
Object.create()方法用于创建具有指定原型对象和属性的新对象。 Object.create()方法返回具有指定原型对象和属性的新对象。
应用范围:
- Object.create()用于实现继承。
用法:
Object.create(prototype[, propertiesObject])
Parameters Used:
- prototype :
It is the prototype object from which a new object has to be created.
- propertiesObject : It is optional parameter. It specifies the enumerable properties to be added to the newly created object.
返回值:
Object.create() returns a new object with the specified prototype object and properties.
下面提供上述函数的示例。
例子:
Input : function fruits() { this.name = 'fruit 1'; } function apple() { fruits.call(this); } apple.prototype = Object.create(fruits.prototype); const app = new apple(); console.log(app.name); Output : "fruit 1"
说明:在此示例中,有两个函数“fruits”和“apple”。创建了一个新的苹果实例,名为“app”,并且已通过“fruits”的原型和属性进行了指定,即this.name =“ fruit 1”。
Input : function fruits() { this.name = 'fruit 1'; this.season = 'summer'; } function apple() { fruits.call(this); } apple.prototype = Object.create(fruits.prototype); const app = new apple(); console.log(app.name); console.log(app.season); Output : "fruit 1" "summer"
说明:在此示例中,有两个函数“fruits”和“apple”。创建了一个新的苹果实例,名为“app”,并且已使用“fruits”的原型和属性进行了指定,即this.name ='fruit 1'和this。季节=“夏季”。
下面提供了上述函数的代码。
代码1:
<script>
// creating a function which will be the
//prototype for the object to be created later
function fruits() {
this.name = 'fruit 1';
}
// creating a function to whose object will
// inherit properties from the prototype
// using object.create() method
function
apple() {
fruits.call(this);
}
// creating an object of the apple function which
// will have properties of the prototype
// object i.e. fruits
apple.prototype = Object.create(fruits.prototype);
const app = new apple();
// Displaying the created object
console.log(app.name);
< /script>
输出:
"fruit 1"
代码2:
<script>
// creating a function which will be the
// prototype for the object to be created later
function fruits() {
this.name = 'fruit 1';
this.season = 'summer';
}
// creating a function to whose object
// will inherit properties from the
// prototype using object.create() method
function apple() {
fruits.call(this);
}
// creating an object of the apple function which
// will have properties of the prototype
// object i.e. fruits
apple.prototype
= Object.create(fruits.prototype);
const app = new apple();
// Displaying the created object
console.log(app.name);
console.log(app.season);
< /script>
输出:
"fruit 1" "summer"
异常:
- 如果propertiesObject参数不为null,则Object.create()方法将引发TypeError异常。
- 如果propertiesObject参数是非原始对象,则Object.create()方法将引发TypeError异常。
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create
注:本文由纯净天空筛选整理自Shubrodeep Banerjee大神的英文原创作品 Object.create() In JavaScript。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。