Object.create不创建属性

时间:2019-02-14 14:56:45

标签: javascript functional-programming prototype

我具有以下功能

const Admins = function(users, affiliation) {
    this.users = users;
    this.affiliation = affiliation;
}
Admins.prototype.filterAffiliation = function _filterAffiliation() {
    const filtered = this.users.filter( (user) => {
        return user.affiliation === this.affiliation;
    });
    console.log(filtered); // this shows the array of users filtered
    return Object.create(this, { users: filtered });
}

const admins = new Admins(users, affiliation);
console.log(admins);  // this shows everything correctly... 
admins.filterAffiliation() // this shows { users: undefined }

如果我将Object.create(this, {users: filtered})更改为this.users = filtered; return this;会“起作用”,但是我不想更改原始对象的状态。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

pipenv的“ properties”可选参数不应仅仅是普通的对象。相反,它应该看起来像pipenv run python main.py 的参数:

main.py

如果您希望该属性可枚举和可写等,则必须明确提及:

Object.create()

正如下面的注释中指出的那样,当原型肯定看起来很奇怪时,让该函数返回通过调用上下文创建的新对象。我不确定为什么你不会

Object.defineProperties()

或其他不太具有异国情调的东西。