当前位置: 首页 > 面试题库 >

基本对象/函数链接在javascript中如何工作?

段干瑞
2023-03-14
问题内容

我试图让我直接想到执行jQuery样式函数链接的原理。我的意思是:

var e = f1('test').f2().f3();

我有一个例子可以工作,而另一个则没有。我将在下面发布。我一直想学习某种事物如何工作的第一原理基础知识,以便我可以在此基础上进行构建。到现在为止,我对链接的工作方式只有一个粗略而松散的理解,并且遇到了无法智能解决问题的错误。

我知道的:

  1. 函数必须返回自己,也就是“返回此”;
  2. 可链接函数必须驻留在jQuery的父函数中。aka.css()是jQuery()的子方法,因此jQuery()。css();
  3. 父函数应该返回自身或自身的新实例。

这个例子起作用了:

var one = function(num){
    this.oldnum = num;

    this.add = function(){
        this.oldnum++;
        return this;
    }

    if(this instanceof one){
        return this.one;    
    }else{
        return new one(num);    
    }
}
var test = one(1).add().add();

但这不是:

var gmap = function(){

    this.add = function(){
        alert('add');

        return this;    
    }

    if(this instanceof gmap) {
        return this.gmap;   
    } else{
        return new gmap();  
    }

}
var test = gmap.add();

问题答案:

在JavaScript中,函数是一流的对象。定义函数时,它是该函数对象的构造函数。换一种说法:

var gmap = function() {
    this.add = function() {
        alert('add');
    return this;
    }

    this.del = function() {
       alert('delete');
       return this;
    }

    if (this instanceof gmap) {
        return this.gmap;
    } else {
        return new gmap();
    }
}
var test = new gmap();
test.add().del();

通过分配

新gmap();

在变量测试中,您现在已经构造了一个新对象,该对象“继承”了gmap()构造函数(类)的所有属性和方法。如果您运行上面的代码段,则会看到“添加”和“删除”的警报。

在上面的示例中,“ this”是指窗口对象,除非您将函数包装在另一个函数或对象中。

起初我很难理解链接,至少对我来说是这样,但是一旦我理解了链接,我就意识到了工具的强大功能。



 类似资料:
  • 我是JavaScript的新手,我认为对象是通过引用传递的。 我期望的输出是: 获得的输出: 当引用的地址时,为什么仍然 null null

  • 我被要求创建一个名为的对象,它可以链接函数和。 例如: 在此场景中,它首先打印早餐,等待3秒钟,打印午餐,然后在3秒钟后打印晚餐。 我试过这样的东西,但没用。我错过了什么?

  • 问题内容: …每个对象还引用了同一数组中的其他对象吗? 当我第一次想到这个问题时 将存在并搜索有关如何在javascript中克隆对象的信息。我确实在StackOverflow上发现了一个问题(由相同的@JohnResig回答),他指出,使用jQuery,您可以做到 clone对象。我尝试了一下,但这只复制了数组中对象的引用。所以如果我 nodeArray [0]和clonedNodesArray

  • 我想用JavaScript将这个对象中的数字放入一个数组。我已经用尝试过了,但在Chrome中出现了以下错误: 未捕获的TypeError:Data.Split不是函数。 我如何提取数字?

  • 问题内容: 我有一个javascript对象(实际上是通过ajax请求获取数据的): 我已经添加了一些东西: 现在,我要删除状态无效的所有对象(但保持所有顺序相同): 在我看来,所有这些都应该起作用,但是我收到的错误不是函数。我知道为什么它与数组不一样,但是我该怎么办? 问题答案: 适用于数组,而不是对象,因此请使用正确的数据结构。

  • 本文向大家介绍什么是JavaScript中的函数链接?,包括了什么是JavaScript中的函数链接?的使用技巧和注意事项,需要的朋友参考一下 功能链 函数链接不过是使用点表示法将函数分组在一行中而已。这种类型的链接使代码非常简洁,并提高了性能。在这里,我们将学习使用常规对象进行函数链接。 a)没有功能链  在以下示例中的对象“OBJ”被创建并在该对象中的公共属性 称为“I”是使用关键字创建“这个