const test = (data) => {
if (!data.hasOwnProperty('reset')) {
// If reset is not defined, then we can use Object.defineProperty
Object.defineProperty(data, 'reset', {
enumerable: false,
configurable: false,
value: function () {
const keys = Object.keys(this);
for (let i = 0; i < keys.length; i++) {
delete this[keys[i]];
}
return this;
}
});
} else {
// If reset is already defined, then we can't use Object.defineProperty
delete this.reset; // Delete the reset property and then define it again
Object.defineProperty(data, 'reset', {
enumerable: false,
configurable: false,
value: function () {
const keys = Object.keys(this);
for (let i = 0; i < keys.length; i++) {
delete this[keys[i]];
}
return this;
}
});
}
return data;
}
const data = {
name: 'NoNametxt',
age: 30,
reset: 1 // If reset is already defined, then we can't use Object.defineProperty and we have to delete the reset property and then define it again
}
console.log(test(data)); // { name: 'NoNametxt', age: 30 }
console.log(test(data).reset()); // { }
console.log(test(data)); // { }
1..toString()
.indexOf("1")//<=returns number 0
//even though a number is returned we only need one dot here
.toString();//<="0"
var num = 1234;
num.toString()//<=one dot
.indexOf("23");//<=1
4条答案
按热度按时间wf82jlnq1#
定义一个“点函数”很容易。下面是如何在单个对象上定义它。
如果你想在一个“类”的所有示例上定义它,使用
prototype
。你甚至可以在内置类型(有些,如Prototype。js,这样做,虽然大多数人建议反对它)。
insrf1ej2#
我强烈建议不要尝试替换任何内置方法,但是,您可以自由地定义您自己的方法。
你可以通过将方法附加到
Number
或String
类型的原型来实现:进一步阅读
yqkkidmi3#
我将向您展示如何添加函数点函数而不使用类。
ct2axkht4#
我会给予一下,因为没有人提到你已经可以做到这一点,而不必自己定义任何东西。
需要注意的一件事是,如果你有一个数字,你必须在它后面放置两个点,就好像你有一个函数返回一个数字或一个变量,你没有:
你的例子已经可以工作了,但是因为
indexOf
会返回一个数字,如果你给予它一个有意义的参数,而一个数字没有charAt
方法。