
windowonload = function(){}与(function(){}) 这两个
1-区别:
windowonload 算 事件
function(){}很平常的一个函数,外加一个()实际返回的就是一个匿名函数对象
2-那个比较好,这个问题不存在~!因为这是2个不同的用途~!
windowonload这个表示网页加载完执行后面的那个函数,而一般形式定义的普通函数,只要常规调用就行了
记住:函数:
是对象-有属性有方法,
是数据-可传进任何函数当数据使用
也是作用域---函数就是限制作用域的一段代码集合,js的作用域是相当于其他程序块级作用域~!(个人总结)
js里Function 与 function的不一样的,不仅仅是大小写的问题。
Function是一个构造器,function是Function实例化的一个对象,包含[[call]][[code]]等等属性,可以被执行。
具体使用方法:
function callAnotherFunc(fnFunction, vArgument) {
fnFunction(vArgument);
}
var doAdd = new Function("iNum", "alert(iNum + 10)");
callAnotherFunc(doAdd, 10); //输出 "20"
定义普通函数就用function:
var func = function(arg0, arg1, argN) { statements };//函数直接量
JS箭头函数和function的区别: 箭头函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。 箭头函数不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。 箭头函数不可以使用arguments对象,该对象在函数体内js 箭头函数和function的区别
arguments对象:函数内部对象,传入函数中所有参数的集合,类数组对象
属性:callee 指针,指向拥有这个arguments对象的函数 作用:解耦
例子:迭代
function factorial(num) {
if(num<=1){
return 1;
}else{
return ( numargumentscallee(num-1));
}
}
consolelog(factorial(4));//24
this对象:函数内部对象,引用的是函数执行的环境对象 在全局作用域执行函数时this为全局对象(window)
windowcolor='red';
var o={color:'blue',};
function sayColor(){alert(thiscolor);};
sayColor(); //red
osayColor=sayColor;
0sayColor();//blue 看this引用的谁
caller属性:指向调用当前函数的函数 保存着调用当前函数的函数的引用
function a(){
b();
}
function b(){
alert(bcaller)
}
b();//输出a函数体
apply()和call(): 作用:修改函数this的指向(修改上下文),拓展函数的作用域,对象与方法解耦 区别:传参 apply(要修改的指向,参数数组/arguments对象)
call(要求改成的指向,arg1,arg2)
例子:哑巴说话
function PersonWei() {
}
PersonWeiprototype={
country:'Wei',
sayCountry:function () {
consolelog('I am form '+thiscountry);
},
}
var xuShu={
country:'Shu',
}
var caoCao=new PersonWei();
caoCaosayCountry();// I am form Wei
caoCaosayCountrycall(xuShu); //I am form Shu
不知道这样做合不合理,定义了一个表示魏国人的构造函数PersonWei(),它具有属性:country和方法sayCountry(),然后实例了一个caoCao(曹 *** ),我们想要帮xuShu(徐庶)说出自己的国家: caoCaosayCountrycall(xuShu);让caoCao的this指向变为xuShu(借尸还魂?脑洞大开,应该就是鬼上身,借用你的身体来实现他的行为),这时候thisconutry 中的this指向的就是xuShu对象了,因此结果是 I am form Shu
比如
jquery不能获取outerhtml 然后就拓展一下
jQueryfnouter = function () {
return $($('<div></div>')html(thisclone()))html();
}
$("#a")outer(); 就相当于 docgetbyid("a")outerhtml;
javascript 自定义函数没什么好说的
javascript 拓展函数是这样 比如 distinct方法
Arrayprototypedistinct = function () {
var $ = this;
var o1 = {}; //存放去重复值
var o2 = {}; //存放重复值
var o3 = []; //存放重复值
var o; //数组单个变量
for (var i = 0; o = $[i]; i++) {
if (o in o1) {
if (!(o in o2)) o2[o] = o;
delete $[i];
} else {
o1[o] = o;
}
}
$length = 0; //清空原数组
for (o in o1) {
$push(o);
}
for (o in o2) {
o3push(o);
}
return o3;
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)