gpt4 book ai didi

javascript - 这个 JavaScript 增强方法是如何工作的?

转载 作者:行者123 更新时间:2023-11-30 07:25:01 25 4
gpt4 key购买 nike

类似于this question ,我正在关注 Douglas Crockford 的 JavaScript,The Good Parts。在第 4 章中,他谈到了扩充类型,我觉得这很令人困惑。他写了这个示例代码:

Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};

Number.method('integer', function ( ) {
return Math[this < 0 ? 'ceil' : 'floor'](this);
});

然后他测试了新的 integer方法:

document.writeln((-10 / 3).integer());  // -3

我不明白 this.prototype[name] 的语法(特别是括号)或 Math[this < 0 ? 'ceiling' : 'floor'](this) (同样,括号以及 Math 的来源)。更重要的是,有人可以解释一下代码的一般工作原理,以及测试代码工作的原因吗?

最佳答案

通过扩展 Function.prototype,您可以为每个函数添加一个可用的方法。请记住,JavaScript 中的函数是对象,因此它们可以具有属性和方法,例如。 调用应用

method 函数方法让您可以将方法添加到任何给定函数的原型(prototype)中。 Number 是一个函数;数字的构造函数,它有一个原型(prototype)。您添加到原型(prototype)的函数可用于对象的所有实例,在本例中是一个数字。

Math 是 JavaScript 中的内置对象,通过使用括号表示法,您可以动态访问对象的属性。请记住,对象键只是字符串,即使您不将它们写成字符串,它们仍然可以通过带字符串的括号表示法来访问,例如:

var obj = {
key: 'hello'
};

var k = 'key';

obj[k]; //=> 'hello'

Math 的情况下,它只是根据条件决定是否应该使用 ceil(不是“ceiling”)或 floor,你可以这样写:

if (this < 0) {
Math.ceil(this);
} else {
Math.floor(this);
}

关于javascript - 这个 JavaScript 增强方法是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20256479/

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