欢迎您访问我爱IT技术网,今天小编为你分享的javascript教程:【javascript中万恶的function实例分析】,下面是详细的讲解!
javascript中万恶的function实例分析
javascript中最有特色而又让你困惑的function算一个了
下面看一下常用操作
function doit(){
.....
}
doit();
javascript中的函数我们可以把它当作方法使用
var obj=new Object();
obj.say=function(){
.....
}
obj.say();
而function实际上就是对象(即Function类型的实例)
function result(num1, num2) {
return num1 + num2;
}
var result=new Function("num1", "num2", "return num1+num2");
以上执行效果是一样的,同时function result还可以这样写(即函数表达式)
var result=function(num1,num2){
return num1+num2;
}
这俩种写法的唯一区别是function是优先执行,而函数表达式是代码执行到才执行,另外每个函数内部都有一个类似数组的arguments对象
函数执行动态参数,即
function result(){
return arguments[0]+arguments[1];
}
result(1,2);
arguments在动态传递参数方面经常使用
既然说function是对象,那么它应该也具体属性
function person(){
....
}
person.name="xxxx";
person.say=function(){
alert(this.name);
}
person.say(); //alert("xxxx")
我们还可以把它当成类,而函数体相当于构造函数
function Person(nm){
this.name=nm;
this.say=function(){
alert(nm);
alert(this.name);
}
}
var p1=new Person("ygm1");
p1.say(); //alert ygm1 ygm1
var p2=new Person("ygm2");
p2.say(); //alert ygm2 ygm2
注意这里要用this.name 因为this代表的是当前对象,如果直接alert(name) 求的是window对象的属性,同时传进来的参数nm在方法say中可以直接用,其实这涉及到作用域链,每个function体就是一个作用域,子域可以访问到父域的属性,而反过来却不行(其实也是可以取到的,设计到闭包一些知识,这里不做详解..)
与其他一些OO语言相比,每个类都可以有一些静态属性或方法,而javascript通过原型来模拟以达到每个对象共享其属性
function Person(num) {
.....
}
Person.prototype.name="ygm";
alert(new Person().name);
但OO语言的静态方法都是由类去调用,不能实例化本身的,javascript中由于其特殊性恰好相反
注意这里alertPerson的name属性,如果函数体内没有查找到name则会到原型中去找,如果查找到则会屏蔽原型中的name直接返回其值
其实每创建一个function的同时也创建了一个原型对象,而原型对象引用自object,所以object是所有对象的基类
我们可以重写原型对象
Person.prototype=new ParentPerson();
Person的原型对象指向ParentPerson对象,而ParentPerson对象又指向自己的原型对象...,也就形成了原型链...
好了 今天就写到这里...
关于javascript中万恶的function实例分析的用户互动如下:
相关问题:javascript中Function 与Object的关系
答:一、从定义的角度来说: function Function(){} 前者为定义一个js函数 后者为这个函数的名称 Object为选择的DOM对象 二、从用法讲: var a = new Object(function(){}); 这里a也是function了。 三、总结: 不管是function ,还是new Function(), ... >>详细
相关问题:在javascript中Function和function有什么区别?
答:还是有区别的, fn = new Function("arg1","alert(arg1)");这是新建一个函数, Function 是一个类,类似Array,String,Number,Object 等的原型 如var arr=new Array(); 而所有的function 是继承了Function的属性~~ >>详细
相关问题:javascript中的function用法
答:var asd=new Class("a");//你能new得出来?你new的对象就不是一个类你怎么去new? 继承的话 给你个例子 var Class = function (cfg) { this.side = function () { alert(this.name || ""); }; } var p = function(){ this.name = "p"; } p.prototy... >>详细
- 【Array】js中更短的 Array 类型转换-类型转换
- 【append】append和appendTo的区别以及appendChil
- 【ExtJs】ExtJs 表单提交登陆实现代码-表单提交-
- 【addClass】javascript自定义的addClass()方法
- 【Ajax】jQuery 学习第六课 实现一个Ajax的TreeVi
- 【cookie】不要在cookie中使用特殊字符的原因分析
- 【extjs】extjs每个组件要设置唯一的ID否则会出错
- 【AngularJS】使用AngularJS创建单页应用的编程指
- 【focus】JavaScript使用focus()设置焦点失败的解
- 【bootstrap3】基于bootstrap3和jquery的分页插件
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
