gpt4 book ai didi

javascript - 在原型(prototype)内部定义函数(如 toString 函数)

转载 作者:行者123 更新时间:2023-12-03 03:39:05 27 4
gpt4 key购买 nike

当我设法在原型(prototype)对象内定义一个函数时,但是当我在 props 上使用 foreach 循环时,我发现这个方法也是我的 props 之一。

我想知道我是否可以定义像 toString() 方法这样的方法?

hasOwnProperty() if inside 循环对我来说不是一个选项,因为循环位于包内。

这是我的代码。

function Person (personProps) {

Object.assign(this, {...personProps});
console.log(this);
}

Person.prototype.sayHay = () => {
console.log("hay");

}


const createPerson = (personProps) => {
let x = new Person(personProps);
x.sayHay();
return x;
};

export default createPerson;

感谢您的帮助。

最佳答案

您可以像这样在 Person 原型(prototype)上定义属性 -

function Person(personProps) {
Object.assign(this, { ...personProps});
}

Object.defineProperty(Person.prototype, "sayHay", {
value: function() {
console.log("hay");
},
/*
You can make `enumerable` property below false,
if you don't want it to be shown while
looping over properties
*/
enumerable: true
});

const createPerson = (personProps) => {
let x = new Person(personProps);
return x;
};

let person = createPerson({
a: 1
})

person.sayHay();

for (p in person) {
console.log(p);
}

这样您就不必在每次创建对象时都定义 sayHay 属性。

关于javascript - 在原型(prototype)内部定义函数(如 toString 函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45714956/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com