📜  Javascript Object.create()(1)

📅  最后修改于: 2023-12-03 15:31:38.045000             🧑  作者: Mango

Javascript Object.create()

Object.create() 是一个用于创建一个新对象的方法,在使用它时,我们可以选择一个原型对象作为新对象的基础,同时我们也可以给新对象添加额外的属性和方法。

语法
Object.create(proto, [propertiesObject])
  • proto:对于新对象来说,它要继承的原型对象。
  • propertiesObject:可选参数,包含一个或多个属性描述符对象。
返回值

一个新对象,该对象的原型链将其链接到 proto 参数中指定的原型对象。

示例

下面我们将通过两个示例来演示 Object.create() 方法的用法,首先我们来看一个简单的示例,它演示了如何使用 Object.create() 方法来实现继承:

let animal = {
    type: 'animal',
    say: function() {
        console.log('I am ' + this.type);
    }
};

let cat = Object.create(animal);

cat.type = 'cat';
cat.say(); // I am cat

在上述示例中,我们首先定义了一个名为 animal 的对象,该对象中包含一个属性和一个方法。然后我们使用 Object.create() 方法创建了一个名为 cat 的新对象,它继承自 animal 对象。最后,我们给 cat 对象添加了一个 type 属性,并调用 say() 方法。

再来看一个稍微复杂一些的示例,它演示如何使用 Object.create() 方法来创建一个带有 getter 和 setter 方法的对象:

let person = {
    firstName: 'John',
    lastName: 'Doe'
};

let fullNameObj = Object.create({}, {
    firstName: {
        get: function() { 
            return this._firstName; 
        },
        set: function(value) { 
            this._firstName = value.toUpperCase(); 
        }
    },
    lastName: {
        get: function() { 
            return this._lastName; 
        },
        set: function(value) { 
            this._lastName = value.toLowerCase(); 
        }
    },
    fullName: {
        get: function() { 
            return this.firstName + ' ' + this.lastName; 
        },
        set: function(value) { 
            var names = value.split(' ');
            this.firstName = names[0];
            this.lastName = names[1];
        }
    },
});

fullNameObj.firstName = 'Jane';
fullNameObj.lastName = 'Smith';

console.log(fullNameObj.fullName); // 'JANE smith'

在上述示例中,我们首先定义了一个名为 person 的对象。然后我们使用 Object.create() 方法创建了一个名为 fullNameObj 的新对象,同时给它添加了三个属性,这三个属性分别对应 person 对象中的两个属性和一个计算属性。每个属性都包含一个 getter 和一个 setter 方法,这些方法用于对属性进行读取和设置。

最后,我们给 fullNameObj 的 firstName 和 lastName 属性分别赋值为 'Jane' 和 'Smith',并打印出 fullName 属性的值,它是通过 firstName 和 lastName 计算得到的。需要注意的是,在fullName的setter方法中,我们将输入的值按空格分成了两个部分,分别为firstName和lastName进行赋值。

总结

Object.create() 是一种创建对象的方式,它可以用于实现继承、创建对象并为其添加 getter 和 setter 方法等。使用 Object.create() 时,我们需要指定一个原型对象,并可以选择添加其他属性和方法。