lom599乐百家官网首页JS东西实例化的时分,event做了什么?

JS东西实例化的时分,event做了什么?

之前运用东西都是如许:

//构造函数
function Testfoo{
  this.foo = foo;
  alertthis.foo;
}
//实例化
var ale = new Test"Holle!";//传入foo实参

然后发明构造函数可以不运用形参,而用event东西直接调用

//构造函数,不运用形参
function Test2e{
  this.foo = e.foo;
  alertthis.foo;
}
//实例化
var ale2 = new Test2{foo: "Hello Again!"};

event东西代表事变形状,但是实例化东西时event详细做了什么?有点转不过去
还可以再简化一下。。我只需知道event做了什么

//构造函数,不运用形参
function Test3e{
  alerte.foo;
}
//实例化
var ale3 = new Test3{foo: "Hello Again2!"};

看到这是两天前的约请,不过既然没有称心答案,我来表明下你遇到了什么样的题目

起首,你定义了一个带有一个参数的构造函数

function Testfoo {
    // ......
}

这个构造函数定义为需求一个参数,外部会对这个参数中断处理。同时,你盼望这个参数是一个字符串(姑且这么猜测),如许经过 this.foo = foo 可以给字段 foo 付与一个字符串值。但是,题目呈现了

JavaScript 的变量是不指定范例的,参数也是一样。你盼望的范例并纷比方定是用户(指调用者)构造的时分传入的范例。你这里盼望用户传入字符串,但实际用户传入了一个东西,乃至也有可以是一个数组,或许函数,总之,你根本不克不及确定用户输入什么,就像这些:


// 传入东西
new Test{ name: "hello" };

// 传入数组
new Test[1, 2, 3, 4, 5];

// 传入函数
new Testfunction {
    console.log"hello world";
};

// 啥都不传入
new Test;

既然不克不及确定用户会传入啥,那如今有两个方案

  1. 文档中明晰的阐明需求传入字符串参数,实际处理的时分把参数当成是字符串值处理

  2. 反省用户传入的参数是什么,辨别中断处理

第一种方案容错极差,以是不讨论它。我们来说说第二种方案。

关于可以想像的一些情况,中断处理,比如

function Testfoo {
    switch typeof foo {
        case "string":
            // 假如传入的 foo 是个字符串,符合预期
            this.foo = foo;
            break;
        case "function":
            // 假如传入的 foo 是个函数,取其运算构造
            this.foo = foo;
            break;
        case "object":
            // 假如是个东西(留意,有可以是 null)
            // 取其 foo 值,没有则用默许值交换
            this.foo = foo || {}.foo || "";
            break;
        default:
            // 别的情况用默许值交换
            this.foo = "";
            break;  // 这个 break 可以不要,我按 C# 习气写的
    }
}

这个容错性就比较好了,但是仍然会有一些漏洞,比如 typeof foo === "function" 的时分,取其后果,但其后果的范例仍然是不确定的。如那边理这个题目你可以参照着自己想办法了,普通不需求搞得太宏大,结合文档加部分容错就可以处理绝大少数的情况

你究竟在问什么?参数传出来就传出来了,这和event有一毛钱干系?
并且,你都援用e.foo了,这叫没运用形参?

这里的e是参数不是event东西吧?新手表现就看传出来了一个json款式的参数而已。

我以为你这个e便是一个人现东西的参数,不是event东西

你转不过去是由于完全不知道event是个什么东西!
你实例化传参是一个object,不论构造函数的形参是什么都可以调用,比方

function testdata{
    alertdata.foo;
}

你的形参是e,这个e和事变东西没有一毛钱的干系!

说说事变东西,是发作某个事变,比如click事变才会发生事变东西

document.getElementByIdid.onclickfunctione{
    var event = e||window.event;
    //当这个点击办法发作时,这才焦作event东西
};

// 这个中央你以为 e 等价于 事变里面的 event 是吧??
// 但是这是错误的!
// 要想这里的 e 等价于 event
// 你需求将其和 事变绑定在一同,且不克不及传入任何参数才行(Test2.bindobj这种是允许的
// 不过不克不及:Test2.bindobj , args如许,由于带了参数 args
// 不懂的话,可以百度谷歌 js bind 办法)...
// 你自己的源码:
function Test2e{
  this.foo = e.foo;
  alertthis.foo;
}
//实例化
var ale2 = new Test2{foo: "Hello Again!"};
----------------------------联络线-------------------------------
// 让 function Test2e{...} 里面的 e 等价于 event 需求如许做
window.onload = Test2;
function Test2e {
  console.log我是事变东西: , e;
}

这里面哪有event。。。。。

(看完/读完)这篇文章有何感想! lom599乐百家官网首页的分享…

发表评论

姓名 *
电子邮件 *
站点