gpt4 book ai didi

javascript - 在 JavaScript 中调用不带括号的函数

转载 作者:行者123 更新时间:2023-12-02 18:49:23 24 4
gpt4 key购买 nike

JavaScript 中有没有一种方法可以调用不带括号的函数?

例如在 jQuery 中:

$('#wrap').text("asdf"); 可以使用,$.ajax(ajaxOptions);

也可以使用

我正在将一个函数(类)映射到 window.$,其中包含一组我希望能够带或不带括号调用的函数。就像 jQuery 一样。

这是一个代码示例:

function Test(asdf) {
this.test = function(testVar) { return testVar + ' asdf'; }
}

我将 Test() 映射到 $:

window.$ = new Test();

我必须像这样调用函数(类):

$('asfd').test('ASDF');

但我希望能够这样调用它:

$.test('asdf');

最佳答案

JavaScript 非常灵活,因为对象基本上是一个映射,可以包含任意数量的键值对,其中值本身可以是一个对象,因此可以嵌套。 JavaScript 的另一个有趣的方面是函数本身就是第一类对象,因此在键值对中,您可以将函数作为值。

获得像 jQuery 这样的东西就变得非常简单。你从一个函数(构造函数,或者类,如果你愿意的话)开始,

function myFunction() {
// do some awesome web 2.0 stuff
}

由于 myfunction 是一个函数,也是一个对象,因此您也可以将键值对附加到它上面,这就是 jQuery 所做的。要验证 myFunction 是否也是一个对象,请执行 instanceof 检查:

myFunction instanceof Function; // true
myFunction instanceof Object; // true

因此,我们可以向函数添加属性,这些属性可以是简单值,也可以是函数本身。

// adding a simple property that holds a number
myFunction.firstPrime = 2;

// adding a function itself as a property to myFunction
myFunction.isPrime = function(number) {
// do some magic to determine if number is prime
};

但是,如果这不是您的问题,并且您确实想知道是否可以在不使用括号的情况下直接调用函数,那么答案是肯定的,您可以使用 ECMAScript 第五版中的添加内容。

这是一个不使用括号使用 Object.defineProperty 调用函数的示例并将其定义为 getter:

var o = {};

Object.defineProperty(o, "helloWorld", {
get: function() {
alert("hello world");
},
set: undefined
});

o.helloWorld; // will alert "hello world"

Try this example在 Chrome 或 Safari 或 Firefox nightly 中。

关于javascript - 在 JavaScript 中调用不带括号的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3929781/

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