javascript - 一段简短却让人看得蒙逼的JS代码?
怪我咯
怪我咯 2017-04-11 10:13:08
[JavaScript讨论组]

分析公司页面的时候遇到的
作用:在p内部循环上下滚动p,每个p条目显示1500ms(根据代码猜的)。当鼠标悬停时停止滚动。
HTML结构如下

汉堡

//p的高度也为20px

番茄酱

薯条

And Cheese

//实际代码的p内部共有6个p标签

JS代码如下

new是用function创建新对象的关键字,那直接new function又是什么意思?在这个function内部无参数地调用arguments.callee还能调用到函数本身吗?此外还有很多看不懂的地方,求解!
new function是不是相当于(function(){}())呢?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(3)
迷茫

分开你能明白,合起来就不明白了?

这样是可以的(函数声明):

function C() {
...
}

var c = new C();

这样也是对的(函数表达式):

var C = function() {
...
}

var c = new C();

省略中间变量当然也没问题:

var c = new function() {
...
};

这种形式跟上面的没有本质区别。

至于arguments.callee,是在函数调用时,函数内部的变量arguments上的一个属性。

那么函数调用有哪些方式?

  • 直接调用:f(...)obj.f(...)

  • 通过new关键字调用

  • 通过applycall等方法调用

new是用来创建对象的不错,但是它同时也是一种调用函数的方式啊,所以此时在函数内部的arguments.callee当然是有效的,并且指向函数对象本身。

PHPz

相当于
var _fun = argument.callee;
setTimeout(_fun,1500);

不同于var _f = function(){};
var只是一个声明,function内部的代码只有在_f()的时候才会被执行。
new则是实例化了一个对象,会调用function(){}内的构造函数,function(){}内部的代码会立刻被执行。

PHP中文网

new function : 创建函数并执行
arguments : 正在执行的函数实例
arguments.callee: 返回的是函数对象本身

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号